Spring MVC学习笔记(一) DispatcherServlet分析
来源:互联网 发布:node v6.9.4 x64.msi 编辑:程序博客网 时间:2024/05/17 03:21
要想使用SpringMVC,必须得了解DispatcherServlet,配置DispatcherServlet是使用SpringMVC的第一步。
DispatcherServlet类位于spring的spring-webmvc-3.2.0.RC1.jar包中,完整的类路径为org.springframework.web.servlet.DispatcherServlet
DispatcherServlet是一个servlet,作为一个前端控制器,负责接收请求,并且根据规则分发请求到后端的controller。因为它是一个servlet,所以我们在web.xml中可以作如下配置:
<servlet> <servlet-name>springMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param>classpath*:/springMVC.xml</init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springMVC</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
一个应用中可以有多个DispathcherServlet,不同的DispathcherServlet之间通过各自的servlet名称来区分,每一个DispatcherServlet有自己的WebApplicationContext上下文对象。同时保存的ServletContext中和Request对象中。
<init-param>配置项中指定配置文件的位置和名称,如果此处没有配置,则在DispatcherServlet的初始化过程中,框架会在web应用的 WEB-INF文件夹下寻找名为[servlet-name]-servlet.xml 的配置文件,生成文件中定义的bean。同时此处还有多种其他配置方式:
(1)<param-value>classpath*:springMVC-mvc.xml</param-value>
(2)<param-value>/WEB-INF/classes/springMVC.xml</param-value>
(3)多个配置文件可以用逗号隔开
关于该配置文件的内容在以后的文章中会给出展开的详细说明,此处不再进一步分析。
<load-on-startup>是启动时间,此处配置的1指的是让该servlet随着容器的启动而启动。
<url-pattern>是定义拦截的匹配规则,注意此处不能是/*。为了实现REST风格,此处使用了/,一旦使用/,就会拦截了包括静态文件(*.js,*.png)在内的所有请求,这显然是不行的,现有以下方式来处理该问题:
(1)使用<mvc:default-servlet-handler/>来解决该问题。即在springMVC配置文件中加上这句话就ok了。该句话会把"/**" url,注册到SimpleUrlHandlerMapping的urlMap中,把对静态资源的访问由HandlerMapping转到org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler处理并返回。
DefaultServletHttpRequestHandler使用就是各个Servlet容器自己的默认Servlet。
(2)使用各个容器自己默认的Servlet容器来解决该问题。Tomcat, Jetty, JBoss, GlassFish 自带的默认Servlet的名字 -- "default",我们在DispatcherServlet之前添加以下配置,让默认的容器先拦截请求,这样静态文件就不被进入DispatcherServlet中。
<servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.js</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.png</url-pattern> </servlet-mapping>
至此DispatcherServlet配置及分析完成。
- Spring MVC学习笔记(一) DispatcherServlet分析
- spring MVC(一) DispatcherServlet
- Spring MVC学习-----------DispatcherServlet说明
- Spring MVC学习-----------DispatcherServlet说明
- Spring MVC中的DispatcherServlet学习
- Spring学习总结(2.2)-Spring MVC:DispatcherServlet
- Spring MVC学习笔记(一)---Spring MVC 的HelloWorld
- Spring Mvc学习笔记(一)续
- Spring MVC 学习笔记(一)
- Spring MVC 学习笔记(一):HelloWorld
- Spring MVC学习笔记(一)
- Spring MVC学习笔记(一)-----HelloMVC
- Spring MVC学习笔记(一)
- spring mvc学习笔记《一》
- Spring MVC学习(三)-------DispatcherServlet详解
- ContextLoaderListener和Spring MVC中的DispatcherServlet学习
- ContextLoaderListener和Spring MVC中的DispatcherServlet学习
- ContextLoaderListener和Spring MVC中的DispatcherServlet学习
- UIDatePicker的简单设置
- xen网络前后端交互
- NYOJ234吃土豆
- 执行路径问题
- photoshop--滤镜动作自动
- Spring MVC学习笔记(一) DispatcherServlet分析
- jQuery整理笔记五----jQuery事件
- listView与ScrollView的冲突
- Jersey处理表单Post信息
- 18字体和颜色对话框
- UISwitch的初始化
- COCOS2D-X跨ANDROID&IOS平台开发入门教程
- cocos2dx 3.0 lambda表达式的使用
- Parcelable