Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / web.xml: servlet в качестве welcome file / 11 сообщений из 11, страница 1 из 1
12.04.2013, 16:46:18
    #38223799
javapecker
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
web.xml: servlet в качестве welcome file
Знаю, что начиная с версии сервлетов 2.4 можно в welcome files указывать и сервлеты. А можно ли указать сервлет с параметром? Типа такого
Код: xml
1.
 <welcome-file>servlet?param=a</welcome-file> 
...
Рейтинг: 0 / 0
13.04.2013, 16:07:35
    #38224425
J.Serge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
web.xml: servlet в качестве welcome file
javapeckerЗнаю, что начиная с версии сервлетов 2.4 можно в welcome files указывать и сервлеты. А можно ли указать сервлет с параметром? Типа такого
Код: xml
1.
 <welcome-file>servlet?param=a</welcome-file> 



Мoжет и так можно. Неохота проверять.
Точно можно в качестве welcome-file'а использовать JSP, в которой уже прописать вызов нужного сервлета с любыми параметрами.
...
Рейтинг: 0 / 0
13.04.2013, 17:18:16
    #38224464
IDVsbruck
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
web.xml: servlet в качестве welcome file
Мне тоже кажется, что проще было просто попробовать и не касаться этой темы.
Также представление о назначении <welcome-file/> ошибочно: он служит не "указывать страницы или сервлеты", а только лишь указать URI начального перехода.
Согласно спецификации JSR-154 "Java Servlet 2.5 Specification", раздел 9, глава SRV.9.10 "Welcome Files":авторWeb Application developers can define an ordered list of partial URIs called welcome files in the Web application deployment descriptor. The
deployment descriptor syntax for the list is described in the Web application deployment descriptor schema.

The purpose of this mechanism is to allow the deployer to specify an ordered list of partial URIs for the container to use for appending to
URIs when there is a request for a URI that corresponds to a directory entry in the WAR not mapped to a Web component. This kind of
request is known as a valid partial request.То есть в <welcome-file/> действительно определяется URI. А так как URI (не лез в спецификации, взял банально вики):авторURI = [ схема ":" ] иер-часть [ "?" запрос ] [ "#" фрагмент ]то по идее, ничто не мешает указывать в <welcome-file/> параметры. Как на практике -х.з.
...
Рейтинг: 0 / 0
14.04.2013, 00:35:08
    #38224697
javapecker
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
web.xml: servlet в качестве welcome file
IDVsbruck,
то по идее, ничто не мешает указывать в <welcome-file/> параметры. Как на практике -х.з.
я бы не создавал эту тему, если бы так сделать у меня получилось. К сожалению, не получается, и я пытаюсь понять почему. Вариант с jsp и форвардом мне известен, но хочется разобраться почему прокатывает сервлет, и не прокатывает сервлет с параметром. Провряю на 7-м томкате.
...
Рейтинг: 0 / 0
14.04.2013, 00:51:26
    #38224709
IDVsbruck
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
web.xml: servlet в качестве welcome file
Действительно, непонятно. Хотя schema, address тоже не указываются, подставляется адрес рута. Возможно, для формирования конечного URI берется адрес местонахожения war-файла (проекта) и добавляется указанный path. Все другое отсекается.

Как вариант, можно использовать:
Код: xml
1.
2.
3.
4.
5.
<welcome-file>servlet</welcome-file>
<context-param>
    <param-name>param</param-name>
    <param-value>a</param-value>
</context-param>

И в сервлете:
Код: java
1.
String value = getServletContext().getInitParameter("param");

Хотя сложно себе представить, для чего это может понадобиться ... Тест?
...
Рейтинг: 0 / 0
14.04.2013, 01:02:32
    #38224717
javapecker
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
web.xml: servlet в качестве welcome file
IDVsbruck,
да, просто небольшой тест. Есть один сервлет, выполянющий роль контроллера, и несколько jsp. Параметром сервлет получает идентификатор нужной страницы, заботится о том, чтобы в запросе оказались нужные для конкретной jsp данные, и перенаправляет запрос к ней. Заглавная страница, которую должен увидеть пользователь, так же должна быть подготовлена. Мне показалось нормальным использовать для этой цели сервлет с параметром как велком файл. На этом моменте я и понял что это не работает, и просто стало интересно почему. Если в варианте, где все лишнее отсекается, вы под лишним подразумеваете параметры, то в таком случае запрос без параметров попал бы к сервлету. Но этого не происходит, томкат говорит что запрошенный ресурс не найден. Вообщем, не большая проблема это все конечно, просто любопытство осталось.
...
Рейтинг: 0 / 0
14.04.2013, 02:06:36
    #38224744
IDVsbruck
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
web.xml: servlet в качестве welcome file
Не знаю, как делается сопоставление сервлету, но если делать так:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<welcome-file>servlet?param=a</welcome-file>

<servlet>
    <servlet-name>someServlet</servlet-name>
    <servlet-class>project.someServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>someServlet</servlet-name>
    <url-pattern>/servlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>someServlet</servlet-name>
    <url-pattern>/servlet?param=a</url-pattern>
</servlet-mapping>

то сервлет вызывается. Одно но: ни в doGet, ни в service в HttpServletRequest request этот параметр не появляется, request девственно чист. Можно предположить, что механизм назначения HttpRequest для методов сервлета происходит после сопоставления маппинга запроса выполняемому сервлету и от параметров, которые назначены в web.xml, не зависит.

Уверен, что сделать желаемое подобным образом невозможно.
...
Рейтинг: 0 / 0
14.04.2013, 23:26:39
    #38225175
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
web.xml: servlet в качестве welcome file
Если вспомнить, что (первый попавшийся) welcome-файл вызывается запросами вида http://хост/ - многих не(дораз)умений можно избежать.
Если вспомнить что браузер автоматически заменит хост на http://хост/ - вопросов должно остаться ещё меньше.
...
Рейтинг: 0 / 0
15.04.2013, 00:05:51
    #38225197
javapecker
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
web.xml: servlet в качестве welcome file
Basil A. Sidorov,
не понял
...
Рейтинг: 0 / 0
15.04.2013, 00:19:14
    #38225201
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
web.xml: servlet в качестве welcome file
javapeckerне понялЕсли пришло обращение вида:
Код: sql
1.
GET ресурс/ HTTP/1.x

то сервлет-контейнер проверит, что ресурс является каталогом, построит актуальный список "приветственный файлов" и, если найдёт в каталоге подходящий, вернёт результат обработки этого файла. Если не найдёт - вернёт или список файлов каталога или "404 Not found".
Технически, в частности, это означает эквивалентность:
Код: sql
1.
GET / HTTP/1.x

и
Код: sql
1.
 GET /index.html HTTP/1.x

Сервлет/jsp обо всех этих деталях знать не будет - в его распоряжении строка исходного запроса (или "/" или "/index.html").
Параметры файлов-приветствий, как максимум, будут использованы при поиске файла (приведёт к "404 Not found"), а скорее всего - будут просто "отрезаны".
...
Рейтинг: 0 / 0
15.04.2013, 00:36:24
    #38225212
javapecker
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
web.xml: servlet в качестве welcome file
Basil A. Sidorov,
теперь понятно
Сервлет/jsp обо всех этих деталях знать не будет - в его распоряжении строка исходного запроса (или "/" или "/index.html"). За это спасибо, мне казалось что это не так.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / web.xml: servlet в качестве welcome file / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]