|
|
|
В чем принципиально важное значение service() метода сервлета помимо известного?
|
|||
|---|---|---|---|
|
#18+
Добрый день! известно, что: 1. service вызывается контейнером при каждом запросе веб-серверу, ему передается request/response 2. service вызывает метод, соответсвующий типу запроса(doGet, doPost и т.д.) Остается непонятным: 1. Как определяется тип запроса? По каким-нибудь свойствам, инкапсулированным в объекте request-а? 2. Перед тем как перенаправить на соответсвующий doGet, doPost и т.д. - метод что-нибудь делает(иницирует)? Всмысле может инициализация чего-нибудь связанного с контекстом данного веб-приложения или в этом роде? 3. Какие последствия могут возникнуть, если всю логику обработки запроса писать в переопределенном service? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2006, 21:10:31 |
|
||
|
В чем принципиально важное значение service() метода сервлета помимо известного?
|
|||
|---|---|---|---|
|
#18+
ddockerКак определяется тип запроса? По каким-нибудь свойствам, инкапсулированным в объекте request-а? - с помощью условного перехода и метода getMethod() интерфейса HttpServletRequest ddockerПеред тем как перенаправить на соответсвующий doGet, doPost и т.д. - метод что-нибудь делает(иницирует)? Всмысле может инициализация чего-нибудь связанного с контекстом данного веб-приложения или в этом роде? - насколько помню, ничего такого он не делает ddocker Какие последствия могут возникнуть, если всю логику обработки запроса писать в переопределенном service? - перестанут автоматически вызываться методы doGet, doPost и т. д. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2006, 22:25:02 |
|
||
|
В чем принципиально важное значение service() метода сервлета помимо известного?
|
|||
|---|---|---|---|
|
#18+
ясно. в таком случае, совсем необязательно в переопределенном service() вызывать super.service() [если у нас конечно нет переопределенных doPost/doGet...], как в случае с методом init() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2006, 23:48:19 |
|
||
|
В чем принципиально важное значение service() метода сервлета помимо известного?
|
|||
|---|---|---|---|
|
#18+
Нашел таки еще одну важную функцию service()! Вернее на другом форуме статейку подкинули (http://www.informit.com/articles/article.asp?p=29817&seqNum=3&rl=1): ...Second, you can add support for modification dates by adding a getLastModified method. Since getLastModified is invoked by the default service method, overriding service eliminates this option. Finally, you get automatic support for HEAD, OPTION, and TRACE requests.... Т.е. если мы не вызываем super.service() в нашем переопределенном service() - то не сможем указать нужный LastModified в заголовке ответа! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2006, 00:36:27 |
|
||
|
В чем принципиально важное значение service() метода сервлета помимо известного?
|
|||
|---|---|---|---|
|
#18+
ddockerТ.е. если мы не вызываем super.service() в нашем переопределенном service() - то не сможем указать нужный LastModified в заголовке ответа! - Вы ошибаетесь, переопределение service никак не влияет на отправку заголовков HTTP. Любые заголовки можно гарантировано отправлять до вызова метода getWriter() или getOutputStream(), в том числе и Last-Modified. При использовании буферизации это можно сделать и после вызова соответветствующих методов, но в данном случае это не актуально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2006, 01:01:47 |
|
||
|
В чем принципиально важное значение service() метода сервлета помимо известного?
|
|||
|---|---|---|---|
|
#18+
Kachalov- Вы ошибаетесь, переопределение service никак не влияет на отправку заголовков HTTP. Как же так..? Вот код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. При этом если getLastModified - вообще не переопределен, то он в любом случае не посылается (ну если его вручную через response не устанавливать, о чем ниже) Kachalov Любые заголовки можно гарантировано отправлять до вызова метода getWriter() или getOutputStream(), в том числе и Last-Modified. При использовании буферизации это можно сделать и после вызова соответветствующих методов, но в данном случае это не актуально. Да, конечно, как это я про HttpResponse.setHeader забыл... Видимо этот описанный механизм c вызовом getLastModified относится к что-то вроде механизму по-умалчанию.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2006, 01:15:35 |
|
||
|
В чем принципиально важное значение service() метода сервлета помимо известного?
|
|||
|---|---|---|---|
|
#18+
ddockertomcat 5.5.17 - а в других контейнерах? Спецификация ничего не говорит об автоматической отправке Last-Modified, так что респект разработчикам Tomcat :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2006, 01:22:20 |
|
||
|
В чем принципиально важное значение service() метода сервлета помимо известного?
|
|||
|---|---|---|---|
|
#18+
Kachalov ddockertomcat 5.5.17 - а в других контейнерах? Спецификация ничего не говорит об автоматической отправке Last-Modified, так что респект разработчикам Tomcat :) А разве Tomcat не является эталоном реализации WEB-технологий от Sun (Servlet)? Есть же такое понятие, что все что идет на Tomcat идет и на других веб-серверах. Или это только в теории? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2006, 12:44:55 |
|
||
|
В чем принципиально важное значение service() метода сервлета помимо известного?
|
|||
|---|---|---|---|
|
#18+
LeonidvА разве Tomcat не является эталоном реализации WEB-технологий от Sun (Servlet)? Есть же такое понятие, что все что идет на Tomcat идет и на других веб-серверах. Или это только в теории? - Tomcat создается группой независимых разработчиков не имеющих никакого отношения к компании Sun и содержит ряд механизмов и библиотек не описаных в спецификации сервлетов и JSP. Собственно компания Sun разрабатывает спецификацию в виде Servlet/JSP API (в основном в виде интерфейсов), а реализация этой спецификации ложится на плечи разработчиков контейнера сервлетов. Так же Sun специфицирует структуру папок web-приложения и синтаксис конфигурационного файла web.xml. - в отношении сервлетов, как правило, действительно "все что идет на Tomcat идет и на других веб-серверах", хотя и здесь есть подводные камни: вот всплыл вопрос заголовков HTTP, есть еще вопрос размера буфера вывода по умолчанию, есть вопрос авторизации с помощью форм (такой способ предусмотрен в спецификации сервлетов), авторизация SSL - все это зависит от контейнера. В EJB такого рода проблем еще больше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2006, 21:14:06 |
|
||
|
|

start [/forum/topic.php?fid=59&tid=2147690]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
208ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 221ms |
| total: | 507ms |

| 0 / 0 |
