Как я могу установить страницу приветствия на действие распорок?

Запомните это:

Потребители едят ужин (супер); Производитель продлевает фабрику своего родителя

40
задан Roman C 30 December 2014 в 10:08
поделиться

6 ответов

Лично, я сохранил бы ту же установку, которую Вы имеете теперь, но изменяете перенаправление для вперед. Это старается не передавать заголовок обратно клиенту и иметь их, выполняют другой запрос.

Так, в частности, я заменил бы

<% 
  response.sendRedirect("/myproject/MyAction.action");
%>

в index.jsp с

<jsp:forward page="/MyAction.action" />

, другой эффект этого изменения состоит в том, что пользователь не будет видеть URL в изменении строки поиска от" http://server/myproject " к" http://server/myproject/index.jsp ", как это вперед происходит внутренне на сервере.

23
ответ дан Martin McNulty 27 November 2019 в 01:42
поделиться

Я создал бы фильтр и возвратил бы все запросы для укоренения назад с вперед ответом. Взломы с созданием home.do страница выглядят ужасными мне (Еще одна вещь помнить за Вас и заняться расследованиями для кого-то, кто будет поддерживать Ваш код).

1
ответ дан Georgy Bolyuba 27 November 2019 в 01:42
поделиться

"Конечно, существует лучший путь!"

нет. Спецификации сервлета (Спецификация 2.4 Сервлета Java, "Файлы Приветствия SRV.9.10", например) состояние:

цель этого механизма состоит в том, чтобы позволить устройству развертывания определять заказанный список частичного URIs для контейнера для использования для добавления для URIs, когда существует запрос на URI, который соответствует записи каталога в ВОЙНЕ, не отображенной на веб-компоненте.

Вы не можете отобразить Struts на '/', потому что Struts отчасти требует для работы с расширением файла. Таким образом, Вас оставляют использовать отображенный компонент implicitely, такой как JSP или статический файл. Всеми другими решениями являются просто взломы. Поэтому сохраните свое решение, это совершенно читаемо и удобно в сопровождении, не потрудитесь смотреть далее.

6
ответ дан Damien B 27 November 2019 в 01:42
поделиться

Кажется, что популярное решение не будет работать во всех контейнерах... http://www.theserverside.com/discussions/thread.tss?thread_id=30190

1
ответ дан bpapa 27 November 2019 в 01:42
поделиться

С 2,4 версий спецификации Сервлета Вам разрешают иметь сервлет в желанном списке файлов. Обратите внимание, что это не может быть URL (таким как/myproject/MyAction.action). Это должен быть именованный сервлет, и Вы не можете передать строку запроса сервлету. Ваш сервлет контроллера должен был бы иметь действие по умолчанию.

<servlet>
  <servlet-name>MyController</servlet-name>
  <servlet-class>com.example.MyControllerServlet</servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>MyController</servlet-name>
  <url-pattern>*.action</url-pattern>
</servlet-mapping>
<welcome-file-list>
  <welcome-file>MyController</welcome-file>
</welcome-file-list>
11
ответ дан Craig Wohlfeil 27 November 2019 в 01:42
поделиться

Что-то, что я делаю, - это помещаю пустой файл с тем же именем, что и ваше действие struts, и обманываю контейнер для вызова действия struts.

Пример. Если ваше действие struts - welcome.do, создайте пустой файл с именем welcome.do. Это должно заставить контейнер вызвать действие Struts.

6
ответ дан 27 November 2019 в 01:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: