|
Applet2Servlet
|
|||
---|---|---|---|
#18+
Господа, сломал голову пытаясь передать из аплета параметры сервлету. В результате приведенных ниже манипуляций сервлет не получает никаих параметров и при выводе : out.println("***" + request.getQueryString() + "***" ); out.println("len=" + request.getContentLength() ); вижу : ***null*** len=-1 Текст метода привожу полностью. //---------------------------------------------- public void sendRequest() { String postData = null; try{ postData = "bkid=" + URLEncoder.encode(bookIDFld.getText(), "Cp1251" ); } catch(UnsupportedEncodingException exp ) { showStatus("Cannot encode with Cp1251"); return; } URLConnection urlConn = null; ObjectOutputStream oos = null; try { urlConn = httpURL.openConnection(); } catch(IOException es ) { showStatus("Cannot create URLConnection"); } urlConn.setAllowUserInteraction( true ); urlConn.setDoInput( true ); urlConn.setDoOutput( true ); urlConn.setUseCaches( false ); ByteArrayOutputStream byteStream = new ByteArrayOutputStream(512); PrintWriter out = new PrintWriter( byteStream, true ); out.print( postData ); out.flush(); String lengthStr = String.valueOf( byteStream.size() ); // Здесь при проверке lengthStr="7", то есть видимо все в порядке. urlConn.setRequestProperty( "Content-Length", lengthStr ); urlConn.setRequestProperty( "Content-Type", "application/x-www-form-urlencoded"); try { // пишем, а куда ? Сервлет принимает запрос, генерирует // страницу, но параметров не получает byteStream.writeTo( urlConn.getOutputStream() ); getAppletContext().showDocument( httpURL ); } catch( IOException ioe ) {} } ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2004, 12:51 |
|
Applet2Servlet
|
|||
---|---|---|---|
#18+
Обнаружил, что мой сервлет при такой конструкции получает GET запрос, а не POST, как предполагалось. Как заставить аплет отправить POST ? Однако странно, делал ведь все, как описано у мистера Холла, а там предполагается, что при таком тексте будет POST ? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2004, 09:57 |
|
Applet2Servlet
|
|||
---|---|---|---|
#18+
С подсказки на другом форуме выяснилось. Если из аплета мы обращаемся к сервлету для получения данных (через соответствующий поток) и отображаемых затем в аплете же, то вышеописанный механизм работает через POST без проблем. Если же мы хотим ввести в аплете параметры запроса и получить "отчет" из JSP страницы, показываемый через showDocument() надо использовать GET и никак иначе. То есть в этом случае сервлет нельзя заставить "сожрать" POST без дополнительных "телодвижений". ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2004, 10:17 |
|
Applet2Servlet
|
|||
---|---|---|---|
#18+
а зачем это все надо? зачем из полей в аплете (которые с успехом можно заменить на поля в html) передавать данные сервлету? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2004, 10:23 |
|
Applet2Servlet
|
|||
---|---|---|---|
#18+
а если надо: в аплете новый сокет, коннект на свой http-сервер, создается стандартный post-header, отправляется http-серверу (который это отдаст сервлету), сокет (в аплете) закрыть. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2004, 10:25 |
|
Applet2Servlet
|
|||
---|---|---|---|
#18+
Через POST я могу передать подготовленный к выполнению список критериев запроса и не заставлять сервлет "ползать" по HashTable за каждым параметром отдельно. Причем каждый критерий запроса это не простая строка, а объект. Вообще говоря обсуждаемый вопрос важен с общей точки зрения. Рассматривая Java Server Faces мы видим тенденцию "вылезая из кожи вон" сделать клиента "сверхтонким" перенося всю обработку на сервер приложений. В идеале, в случае сложного клиента это приводит к повышению сетевого трафика. Не зря все примеры рассматриваются на уровне Интернет магазинов не только из-за типичности проблемной области, но и из-за отосительно простых действий клиента. Построить на этом механизме Интранет АРМ проблематично. Каким-бы "кривым" механизм использования аплетов не был, мне кажется, что в их современном состоянии HTML формы задачи пока не решают. И ничего другого пока не вижу. Web Start требует инсталляции. И задача иметь полоностью мобильного клиента "средней толщины", которому не надо инсталлировать ничего кроме JRE по моему своей актуальности не утратила. А как Вы думаете ? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2004, 15:27 |
|
Applet2Servlet
|
|||
---|---|---|---|
#18+
а это не нравится? а если надо: в аплете новый сокет, коннект на свой http-сервер, создается стандартный post-header, отправляется http-серверу (который это отдаст сервлету), сокет (в аплете) закрыть. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2004, 16:24 |
|
|
start [/forum/topic.php?fid=59&msg=32489005&tid=2154189]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
208ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 316ms |
0 / 0 |