配置DispatchServlet,截获特定的URL请求
我们可以在web.xml中配置一个Servlet,并通过<servlet-mapping>指定处理的URL。配置DispatchServlet如下:
<servlet>
<servlet-name>simpleSpringMVC/servlet-name>
<servlet-class>org.springframework.web.servlet.DispatchServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
对这里解释一下:
配置名称为simpleSpringMVC的DispatchServlet,他默认自动加载/WEB-INF/simpleSpringMVC-servlet.xml(即<servlet-name>-servlet.xml)的Spring配置文件,启动web层的Spring容器。
<servlet-mapping>
<servlet-name>simpleSpringMVC</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
需要提醒的是,一个web.xml可以配置多个DispatchServlet,通过其<servlet-mapping>的配置,让每一个DispatchServlet处理不同的请求。
DispatchServlet遵循“契约优于配置”的原则,在大多数情况下,你无须进行额外的配置,只需按契约行事即可。
对DispatchServlet的默认规则进行调整,可以通过常用的一些配置参数,可通过<servlet>的<init-param>指定。
- namespace:DispatchServlet对应的命名空间,默认是<servlet-name>-servlet,用以构造Spring配置文件的路径。现实指定该属性后,配置文件对应的路径为:WEB-INF/<namespace>.xml 而非WEB-INF/<servlet-name>-servlet.xml。如果这里把namespase改成了simpleSpringMVC,则对应的Spring的配置文件为WEB-INF/simpleSpringMVC.xml。
- contextConfigLocation:如果DispatchServlet上下文对应的spring配置文件有多个,则可使用该属性按照spring资源路径的方式指定。
- publishContext:boolean类型属性,默认值为true。DispatchServlet根据该属性决定是否将WebApplicationContext发布到ServletContext的属性列表中,以便调用可以借道ServletContext找到WebApplicationContext实例,对应的属性名为DispatchServlet#getServletContextAttributeName()返回的值。
- publishEvents:boolean类型属性。当DispatchServlet处理完一个请求后,是否需要向容器发布一个ServletRequestHandledEvent事件,默认为true。如果容器中没有任何事件监听器,可以将此属性设置为false,以便提高运行性能。