說明下修改需求:以前項目訪問路徑配置了后綴名.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,我還沒有找到原因