2014-08-29 3 views
2

У меня есть webapp с корневым именем webcontext "testProject". Я пытался использовать web.xml и настроить приветственное-файл:Файл приветствия Web.xml не работает в jetty

<welcome-file-list> 
    <welcome-file>/jspFiles/index.html</welcome-file> 
</welcome-file-list> 

Это работает на кота, но не на пирсе:

Tomcat 7.0:

  1. правильно показывает index.html, если я перейти к localhost:8080/testProject/
  2. правильно показывает index.html, если я просматриваю к localhost:8080/testProject/jspFiles/index.html

Jetty 9,0:

  1. дает ошибку 404, если я просматриваю к localhost:8080/testProject/
  2. правильно показывает index.html, если я просматриваю к localhost:8080/testProject/jspFiles/index.html

Моя папка WebContent выглядит следующим образом;

Webcontent 
| 
+ jspFiles/index.html 
| 
+ META-INF 
| 
+ WEBINF 
    | 
    + web.xml 

Нужно ли мне настроить что-то дополнительное, чтобы эта работа работала на причале?

ответ

1

Значения, найденные в <welcome-file>, просто добавляются к входящему запросу в попытке найти ресурс, который запрашивает клиент http.

Запись с '/' просто усложнять вещи (особенно в начале, который считается ненормализованным)

Возьмет, к примеру, в следующем примере:

Webapp deployed to '/foo' 
You have 1 <welcome-file>jsps/index.jsp</welcome-file> set 
Your webapp contents are: 
    /WEB-INF/web.xml 
    /jsps/index.jsp 
    /css/main.css 
    /js/jquery.js 
    /bar/list.jsp 

Давайте несколько сценариев.

  1. Входящий запрос /foo
    • делает {webapp-base}/ существует как файл ресурса? nope
    • {webapp-base}/jsps/index.jsp есть как файл ресурс? да, обработайте его.
  2. Входящий запрос /foo/bar
    • делает {webapp-base}/bar существует как файл ресурса? Неа.
    • {webapp-base}/bar/jsps/index.jsp есть как файл ресурс? Неа.
    • default servlet возвращает 404.

«как файл ресурс» часть является чрезмерно упрощенной, с целью, как поиск файла ресурс может быть любым из следующих мест (это не официальный порядок поиска, см сервлета спецификации для официального заказа)

  • ClassLoader из WebApp - ака /WEB-INF/classes
  • любого содержания в /WEB-INF/resources/
  • любого контента найдено в /META-INF/resources/ в банке фи ле в /WEB-INF/lib/
  • контента в корневом каталоге вашего веб-приложение

И затем, реализации JSP сами добавить возможность поиска контента в других местах.

Главным образом потому, что ваш запрос на файл, заканчивающийся на *.jsp, означает, что для содержимого будет запрашиваться JspServlet (обычно отображаемый на имя сервлета jsp). В некоторых реализациях будет использоваться только входящий request.getPathInfo() против любого содержимого в /WEB-INF/ (это делается для того, чтобы jsps существовал в say /WEB-INF/my.jsp для JspServlet для использования (при компиляции) и обслуживания ответа, а также для получения стандартной спецификации безопасности сервлета /WEB-INF/ и никогда не использовать источник jsp без обработки.

0

Что я нашел, мастер Eclipse.jsp ставит jsp очень близко к тому, где он должен быть, но как Eclipse embedded jetty, так и Eclipse, производящий .war помещая .jsp, где сервер не может его найти. В обоих случаях я щелкнул правой кнопкой мыши на jsp, выбранном MOVE, а затем поместил его либо в папку webapp для встроенной, либо в папку WebContent для Java EE WAR. для каждого нового кода jsp I в обоих случаях.

Это действительно сложно показать, но я попробую. Неправильный способ для Eclipse, работает встроенный причалу:

src/main/webapp (folder) 
+>css   (package) 
+>images  (package) 
+>WEB-INF  (folder) 
++>lib   (folder) 
    web.xml 
    my.jsp 
    ohmy.jsp 
    ohmygod.jsp 

Здесь web.xml находится в правильном месте, но я никогда не понял, что такое место. my.jsp не найден, никогда.

Теперь, если вы используете функцию перемещения для перемещения my.jsp в src/main/webapp, заканчивается таким образом, и my.jsp найден и все работает.

src/main/webapp (folder) 
+>css   (package) 
+>images  (package) 
+>WEB-INF  (folder) 
++>lib   (folder) 
    web.xml 
    my.jsp 
    ohmy.jsp 
    ohmygod.jsp 

Как я сказал, я до сих пор не знаю, где web.xml «это», потому что с Lib папки, но не в этом. .jsp находятся в папке webapp (они действительно есть), где в документации говорится, что они должны быть, и все работает. Это выглядит немного иначе для .war, но проблема и разрешение одинаковы. В худшем случае просто перемещайте .jsp (s) вокруг (или в вашем случае файлы приветствия), пока сервер не найдет их, если эти инструкции не имеют для вас смысла.

У меня есть то, что мне нужно на данный момент, но когда (если) я выясню приветственные файлы, я вернусь и обновлю это.

Смежные вопросы