#tomcat
#tomcat
Вопрос:
Я развернул архив .war в Tomcat 7.0.22 (Java 1.6, macOS Lion). Война называется «myapp.war», и поэтому Tomcat обслуживает http://localhost/myapp (расширив войну в /webapps/myapp). Это обычное поведение
При доступе к URL-адресу, соответствующему каталогу, он должен добавлять «/» . Для корректной работы статических файлов (.css, .js ..) Это необходимо, Но в то время как с примерами сайтов, которые поставляются с Tomcat, это работает (например http://127.0.0.1:8080/examples
, внезапное перенаправление на посещение http://127.0.0.1:8080/examples/
), на моем сайте tomcat не добавляет никаких «/», что делает поиск статических файлов прерывистым. При вызове вручную localhost:8080/myapp/
(<— я добавляю косую черту) все работает нормально.
Что должно происходить? Имейте в виду, что я не касался никаких настроек Tomcat, я просто экспериментирую с тем, что выходит непосредственно из zip-файла Apache!
Спасибо
Комментарии:
1.Вы хотите сказать, что
http://localhost/myapp
это не генерирует перенаправление 302 наhttp://localhost/myapp/
?2. да, точно. спасибо, что заинтересовались
3. Привет, пистаччо!
.war
файл — это примерно переименованный zip-файл. Имея это в виду, если вы откроете его и проверите сопоставление URL-адресов вWEB-INF/web.xml
файле внутри него, вы можете поэкспериментировать с тем, что у него есть. Этот пост о завершающей косой черте дает варианты того, что вы могли бы сделать, когда узнали, что у вас там было!4. Я думаю, вам нужно опубликовать больше информации, в идеале ваш web.xml и / или сопоставления @Servlet. Вы удалили index.jsp? Попробуйте создать . война без добавления какого-либо сервлета и посмотреть, работает ли это (оставляя index.jsp неповрежденным).
Ответ №1:
Во-первых, вы должны подробнее рассказать о своей ситуации. Как сказал @mico, вот решение:
<filter>
<filter-name>Jersey Filter</filter-name>
<filter-class>com.sun.jersey.spi.container.servlet.ServletContainer</filter-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>your package name(s)</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.config.property.WebPageContentRegex</param-name>
<param-value>.*.jsp|.*.css|.*.png|.*.js|.*.gif|.*.jpg</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Jersey Filter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
Идея решения, основанная на:
определение Jersey ServletContainer в качестве фильтра вместо сервлета
Здесь вы можете прочитать больше: http://jersey.576304.n2.nabble.com/Tomcat-trailing-slashes-and-welcome-files-td4684494.html
Здесь говорится, что: If you have a '/*' mapping, then Tomcat won't redirect
Еще одно: вы должны увидеть, как tomcat регистрирует ваш запрос, и решить основную проблему.