DispatcherServlet

DispatcherServlet是前置控制器,配置在web.xml文件中的。拦截匹配的请求,Servlet拦截匹配规则要自已定义,把拦截下来的请求,依据相应的规则分发到目标Controller来处理,是配置spring MVC的第一步。

web.xml

<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
    </servlet>
<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

其中
load-on-startup:表示容器启动时初始化该Servlet;
url-pattern:表示哪些方式的请求交给Spring Web MVC处理

url-pattern

在web.xml里面url-pattern可以有3种方式。

/*

在SpringMVC里面不能使用这个,因为它会对所有的请求都进行拦截。如jsp,png,css等。

*.do

这种是最简单的配置方式,只会对以.do结尾的动态请求进行拦截。

/

这种是为了实现RESTful风格的请求地址,不过会覆盖tomcat默认的拦截请求,这样.js,*.png等静态文件的访问也拦截了。
解决的方案有2种:
方案1:直接做映射,配置一个默认命名的访问tomcat的servlet

<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.jpg</url-pattern>
    <url-pattern>*.js</url-pattern>
    <url-pattern>*.css</url-pattern>
    <url-pattern>*.png</url-pattern>
    <url-pattern>*.gif</url-pattern>
    <url-pattern>*.json</url-pattern>
    <url-pattern>*.html</url-pattern>
    <url-pattern>*.htm</url-pattern>
    <url-pattern>*.swf</url-pattern>
</servlet-mapping>

方案2:使用SpringMVC的方式

<!-- 对静态资源访问进行放行 -->
<mvc:default-servlet-handler />

其他关联项目

  • SpringMVC 菜鸟教程 1 文件上传 配置
    http://blog.csdn/je_ge/article/details/53725357

源码地址

https://github/je-ge/spring

如果觉得我的文章或者代码对您有帮助,可以请我喝杯咖啡。
您的支持将鼓励我继续创作!谢谢!

更多推荐

Spring MVC 菜鸟教程 4 DispatcherServlet url-pattern 详解