背景
由於搭建框架不是經常用到,一次搭建以後,會把代碼copy來copy去,在最近學習spring源碼時,搭建springmvc去配置化的測試工程時,對DispatcherServlet的url-pattern配置總是搞不清楚,所以寫篇博客,以供自己參考
DispatcherServlet常見的配置
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- contextConfigLocation配置springmvc加載的配置文件(配置處理器映射器,適配器等等)
如果不配置,默認加載的是/WEB-INF/[DispatcherServlet 的Servlet 名字]-servlet.xml(springmvc-servlet.xml) -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/springmvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
常見的url-pattern配置有以下三種:
- 第一種:
*.xxx 以指定後綴結尾的請求都交由DispatcherServlet處理
- 第二種:
/ 將會覆蓋容器的default servlet, 凡是在web.xml文件中找不到匹配的URL,它們的訪問請求都將交給該Servlet處理(靜態資源也將會攔截). 所以web.xml沒有配置其他特殊路徑的servlet, 基本上所有的請求都交由DispatcherServlet處理.
/* 錯誤的配置,會攔截*.jsp, *.jspx的請求, 使用這種配置最終要轉發到一個JSP頁面,仍然會由DispatcherServlet, 解析jsp地址, 不能根據jsp頁面找到handler, 會報錯