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映射为逻辑视图名
中文乱码解决方案(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
- springMVC学习笔记二(dispatcherServlet)
- SpringMVC源码(二)DispatcherServlet
- 学习SpringMVC系列教程(二)DispatcherServlet详解
- 学习SpringMVC系列教程(二)DispatcherServlet详解
- 学习SpringMVC系列教程(二)DispatcherServlet详解
- 共同学习SpringMVC源码--DispatcherServlet(二)
- SpringMVC源代码学习(三)DispatcherServlet
- SpringMvc学习笔记(二)SpringMvc控制器
- SpringMVC学习笔记(二)
- SpringMVC学习笔记(二)
- SpringMVC学习笔记(二)
- SpringMVC学习笔记(二)
- SpringMVC学习笔记(一) DispatcherServlet初始化详解(应用上下文的初始化)
- Spring 学习笔记(8)—— SpringMVC 简介、DispatcherServlet 配置
- SpringMVC学习笔记二
- SpringMVC源码剖析(二)- DispatcherServlet的前世今生
- SpringMVC源码剖析(二)- DispatcherServlet的前世今生
- SpringMVC源码剖析(二)- DispatcherServlet的前世今生
- 存储过程之游标
- [LeetCode]Sqrt(x)
- HDU1245:Saving James Bond(Floyd)
- php 简单的二分法查找
- 在C#中使用官方驱动操作MongoDB
- springMVC学习笔记二(dispatcherServlet)
- 关于网上盛传的iPhone锁屏界面的设计
- 【PAT (Advanced Level)】1049. Counting Ones (30)
- Linux命令 tail 加过滤功能
- sgu111 (大整数开方)
- Android开发之发送邮件功能的实现(源代码分享)
- RTMP/RTP/RTSP/RTCP的区别
- springMVC学习笔记三(controller控制器)
- POJ 1185 炮兵阵地 HDU 4539 郑厂长系列故事——排兵布阵