web.xml配置 去除servlet訪問后綴


說明下修改需求:以前項目訪問路徑配置了后綴名.do---------項目為springmvc架構

如訪問主頁就是localhost/portal/index.do或是localhost/portal/user/login.do這樣看起來很讓我不爽所以來動手改成localhost/portal/user/login就好了

直接來看配置吧

1,通常情況下,servlet的訪問有后綴時,只需匹配*.do即可

<servlet>
        <servlet-name>SpringDispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value></param-value>
        </init-param>
        <load-on-startup>0</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>SpringDispatcher</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>

2,目前我是這樣配置解決的

     <servlet>
        <servlet-name>default</servlet-name>
        <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>0</param-value>
        </init-param>
        <init-param>
            <param-name>listings</param-name>
            <param-value>false</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.html</url-pattern>
    </servlet-mapping>
  <servlet>
        <servlet-name>SpringDispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value></param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>SpringDispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
default servlet匹配一些靜態頁面,其他統一走SpringDispatcher,我還在spring中配置了一些靜態文件的路徑如css,js,(其實這些靜態文件也可以通過default servlet來訪問)
<!--css,js路徑-->
    <mvc:resources mapping="/resource/**" location="/resource/" /> 

 

3,一些問題:

關於<servlet-mapping>,我看了一些文檔介紹是這樣說的

a, "/"  意為:如沒有其他匹配的servlet,那么將使此servlet為默認servlet,也就是覆蓋default

b, "/*" 意為:匹配所有

c, 以"/"開頭,以"/*"為結尾時,如/user/* 意匹配路徑

但我在使用中遇到以下問題:

1,/*匹配時可以進入controller,但是返回頁面時,找不到路徑 404

2,/user/*匹配壓根沒用,controller 完全進不去。但是精確匹配可以進controller,如 /index,我還沒有找到原因

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM