DispatcherServlet角色
DispatcherServlet是前端控制器设计模式的实现,提供Spring Web MVC的集中访问点,负责职责的分配,与Spring IoC容器无缝集成,让Spring的所有好处都能得到。详见第二章图2-1。
DispatcherServlet主要用于任务调度,主要用于过程控制。其主要职责如下:
1.文件上传解析:如果请求类型为multipart,将通过MultipartResolver进行文件上传解析;2.通过HandlerMapping将请求映射到处理器(返回一个HandlerExecutionChain,它包括一个处理器和多个HandlerInterceptor拦截器);3.通过HandlerAdapter支持各种类型的处理器(HandlerExecutionChain中的处理器);4.通过视图解析器将逻辑视图名称解析为具体的视图实现;5.本地化分析;6.呈现特定视图等。7.如果在执行过程中遇到异常,它将被交给HandlerExceptionResolver进行解决。
从上面我们可以看到,DispatcherServlet主要负责过程控制(并且过程中的每个关键点都很容易扩展)。
在web.xml中配置DispatcherServlet
servlet servlet-name chapter 2/servlet-name servlet-class org . spring framework . web . servlet . dispatcherservlet/servlet-class Load-on-startup 1/Load-on-start/servlet servlet-mapping servlet-name chapter 2/servlet-name URL-pattern//URL-pattern/servlet-mapping-Load-on-start:表示容器启动时servlet已初始化;
Url-pattern:指示哪些请求被移交给Spring Web MVC,用“/”定义默认的servlet映射。或者“*”。html”意味着拦截所有带有html扩展名的请求。
DispatcherServlet默认使用WebApplicationContext作为上下文,Spring默认配置文件为“/WEB-INF/[servlet名称]-servlet.xml”。
DispatcherServlet还可以配置自己的初始化参数,覆盖默认配置:
参数
形容
contextClass
实现WebApplicationContext接口的类,当前servlet使用该接口来创建上下文。如果未指定此参数,默认情况下将使用XmlWebApplicationContext。
contextConfigLocation
传递给上下文实例(由contextClass指定)以指定上下文位置的字符串。这个字符串可以被分成多个字符串(使用逗号作为分隔符)来支持多个上下文(在多个上下文的情况下,如果同一个bean被定义了两次,后一个优先)。
命名空间
WebApplicationContext命名空间。默认值是[服务器名]-servlet。
所以我们可以添加初始化参数
servlet servlet-name chapter 2/servlet-name servlet-class org . Spring framework . Web . servlet . dispatchersvlet/servlet-class load-on-startup 1/load-on-start init-param-namecontextConfigLocation/param-name param-value class path 3360 Spring-servlet-config . XML/param-value/init-param/如果servlet如上配置,Spring Web MVC框架将加载“类路径:spring-servlet