背景
由于搭建框架不是经常用到,一次搭建以后,会把代码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, 会报错