springMVC学习笔记二(dispatcherServlet)

来源:互联网 发布:湖南工业大学的网络 编辑:程序博客网 时间:2024/05/22 02:04
=========================dispatcherServlet============================
中文乱码解决方案(web.xml)
<!-- 解决中文乱码问题 -->
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>




配置dispatcherServlet前置控制器是第一步
其主要任务:
1 如果请求类型为multipart通过multipartResolver进行文件上传解析
2 通过handlerMapping将请求映射到处理器
3 通过handlerAdapter适配多种处理器
4 通过viewResolver解析视图
5 本地化解析
6 渲染具体的视图
7 通过handlerExceptionResolver来解析异常






web.xml中配置,依据规则分发到目标controller(类action)


示例代码如下:<!-- 配置DispatcherServlet -->
<!-- 方式一 -->
<servlet>
<!-- 名称,有自已的webApplicationContext -->
<servlet-name>example</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- 拦载*.form请求 -->
<servlet-mapping>
<servlet-name>example</servlet-name>
<url-pattern>*.form</url-pattern>
</servlet-mapping>




<!-- 方式二 -->
<!-- 使用springMVC.xml配置文件 -->
<servlet>
<!-- 名称,有自已的webApplicationContext -->
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<!-- 1 不写,/WEB-INF/<servlet-name>-servlet.xml 2 <param-value>/WEB-INF/classes/springMVC.xml</param-value> 
3、<param-value>classpath*:springMVC-mvc.xml</param-value> 4、多个值用逗号分隔 -->
<param-value>classpath*:/springMVC.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- 拦载*.form请求 -->
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>


dispatcherServlet也可以配置自已的初始化参数
contextClass :实现webApplicationContext接口,用它来创建上下文,如果没有指定
              默认使用xmlWebApplicationContext
contextConfigLocation :指定上下文的位置,多个用逗号分隔
nameSpace:




<servlet> 
  <servlet-name>springMVC</servlet-name> 
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
  <load-on-startup>1</load-on-startup> 
  <init-param> 
  <param-name>contextConfigLocation</param-name> 
  <param-value>classpath:springMVC-servlet.xml</param-value> 
  </init-param> 
 </servlet> 
如果指定初始化参数,默认 DispatcherServlet不会从 WEB-INF/[DispatcherServlet 的 Servlet 名 字]-servlet.xml加载 配 置 文 件,而是从指定目录




<!--初始化通用上下文,即加载的bean是整个应用共享-->
<listener> 
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener>
<!--dispapcherServlet初始化springMVC上下文,即加载的bean只对springMVC有效-->








dispatcherServlet中用到的bean:
1 controller 页面控制器
2 handlerMapping: 请求到处理器的映射,返回一个 HandlerExecutionChain 对象(包 含一个 Handler处理器(页面控制器)对象、多个 HandlerInterceptor 拦截器)对象
3 handlerAdapter:将处理器(控制器)转化为适配器,从而支持多种类型的处理器
4 viewResolver:将逻辑视图名解析为具体的view
5 localResover:本地化解析
6 themeResovler:主题解析,类似于皮肤效果
7 multipartResolver:文件上传解析
8 handlerExceptionResolver:处理器异常解析
9 requestToViewNameTranslator:如果处理器没有返回逻辑视图名,它会自动将请求url映射为逻辑视图名

10 flashMapManager:存储一个请求的输出,作为另一个请求的输入,用于重定向


参考:http://jinnianshilongnian.iteye.com/blog/1752171 

0 0