我在Tomcat 7.0.22(Java 1.6,MacOS Lion)中部署了.war存档。战争被称为“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设置,我只是试验直接来自Apache的zip文件的内容!
谢谢
答案 0 :(得分: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定义为过滤器而不是servlet
在这里,您可以阅读更多内容:http://jersey.576304.n2.nabble.com/Tomcat-trailing-slashes-and-welcome-files-td4684494.html
Here说:If you have a '/*' mapping, then Tomcat won't redirect
还有一个:您应该看到tomcat如何记录您的请求并确定主要问题。