Tomcat:找到目录时不附加尾部“/”

时间:2011-10-21 16:26:32

标签: tomcat

我在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文件的内容!

谢谢

1 个答案:

答案 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如何记录您的请求并确定主要问题。