tomcat7 中的坑。 關於welcome-list和servlet-mapping

web.xml中, 使用default servlet設置了針對靜態資源後綴名的過濾. 而且設置了welcome-list, 使用jetty和tomcat6啓動一切正常, 可是使用tomcat7則出現訪問不到根節點(/)的狀況. css

後來將紅色部分去掉後才正常. html

 

原理和更優雅的解決方案:web

Tomcat 6.0.30以前的security問題: https://issues.apache.org/bugzilla/show_bug.cgi?id=50026spring

使用spring的resource標籤: http://docs.spring.io/spring/docs/3.0.5.RELEASE/spring-framework-reference/html/mvc.html#mvc-static-resourcesapache

不推薦使用容器自身的default servlet進行mapping: http://webmasters.stackexchange.com/questions/29550/why-the-difference-between-tomcat-and-tomcat7-regarding-servlet-mapping-and-defa tomcat

關於靜態資源mapping的問題: http://stackoverflow.com/questions/870150/how-to-access-static-resources-when-using-default-servlet/3593513#3593513mvc

 

<!-- 將幾種最經常使用的靜態資源配置在springServlet以前,提升訪問速度 -->
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.html</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.css</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.js</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.gif</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.jpg</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.png</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.eot</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.svg</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.ttf</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.woff</url-pattern>
    </servlet-mapping>

    <!-- spring MVC configuration -->
    <servlet>
        <servlet-name>springServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:/spring/applicationContext-mvc.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <welcome-file-list>
        <welcome-file>/index.html</welcome-file>
    </welcome-file-list>
相關文章
相關標籤/搜索