开涛SpringMVC笔记

SpringMVC笔记

再次学习开涛SpingMVC,总结此笔记,鸣谢开涛:

  • 1.SpringMVC简介
  • 2.Spring MVC-HelloWorld
  • 3.DispatcherServlet理解
  • 4.Controller接口详解
  • 5.Controller拦截器详解
  • 6.Controller注解详解
  • 6.1 Controller注解——生产者消费者模式
  • * 未完 *

1.SpingMVC简介

1.请求-响应模型
2.标准MVC模型
3.WebMVC模型
4.Web发展流程
CGI、Servlet、JSP、Model1(JSP+JavaBean)、Model2(Web MVC)
5.WebMVC特点、各模块特点

2.SpringMVC-HelloWrold

1.SpringMVC是什么、有什么用
2.SpingMVC架构——请求处理流程( **
3.优势
4.HelloWorld( **
流程分析,乱码配置(Post乱码配置)
5.SpringMVC特性( *),即注解配置
常用注解;RestFul注解配置;其他注解配置

3. DispatcherServlet详解

1.dispatcherServlet 作用
2.web.xml配置
3.上下文关系、调用顺序等等( **
4.初始化顺序;
5.默认配置

4.Controller接口详解

1.Controller作用
2.Controller类图、接口等
3.AbstractController用法
通过response 写响应;
在xml中,在Controller的配置属性property设置:
强制请求方法类型为post或get;
强制要求请求有session,串行访问;
设置客户端缓存时间;客户端不缓存;
ETag(实体标记)缓存机制;(客户端第一次请求时,服务器给客户端一个ETag,当客户端第二次请求时,服务器端计算ETag,没有变化,则http响应头状态为304;
4.ServletForwardingController
客户端请求这个Controller时,这个Controller可以将请求Forward到一个Servlet
5.AbstractCommandController——命令控制器(废除)
客户端请求 user.name,user.pwd时,该控制器能自动装配user bean
6.SimpleFormController(表单控制器)
写一个自定义控制器,实现该接口,其中实现 formBackObject 和referenceData 方法,这两个方法返回的Object就是 你要提交的表单数据对象;
7.CancellableFormController
和上面类似,实现 OnCancel()方法,
8.AbstractWizardFormController——向导控制器
写一个自定义控制器,实现该接口,其中实现 referenceData() _实现逻辑,第一页返回啥,第二页返回啥
processFinish()_结束后返回啥
processCancel()_取消后返回啥
方法,并在xml中配置即可,即可实现一步一步的引导功能;
9.AbstractUrlViewController
在xml文件中配置的类,将请求的Url转换成为返回视图
/index/*,可以匹配 /index/demo
/index/**,可以匹配index下的所有目录,包括/index/demo,index/xxx/demo
/*.html,匹配abc.html
?,匹配一个字符,/index?,匹配 /index1,但是不匹配/index,/index12
,匹配零个或多个字符,如/index/,可以匹配一个/index/demo,但不匹配 /index/demo/demo
**,可以匹配/index/demo/demo
最长匹配优先
10.MultiActionController——废除
场景,每一个功能对应一个控制器,如CRUD操作。
用法:
public (ModelandView | Map | String | void) actionName (httpServletRequest request,HttpServletRespose response, HttpSession session, AnyObject)
实现上述的方法即可,注意参数是可选的
然后在xml文件中配置,引用的类 <bean id ="xx" class = "org.xx.xx.MethodNameParse“>根据请求的方法名解析成相应方法
<bean id ="xx" class="org.xx.xx.PropertiesMethodNameReslover>根据配置的属性映射
11.ResqusetToViewNameTranslator
直接将请求转换成为 返回的逻辑视图名
12.数据类型转换

写一个属性转换编辑器,继承PropertyEditorSupport;
写一个Controller,继承AbstractCommandController,在其中某一个方法中绑定注册属性(例如针对电话号码类转换,就使用CustomDateEditor)转换编辑器;
在xml中注册这个Controller即可;

如果使用WebDataBinder,而不是CustomDateEditor,则注册的这个属性转换器是这个Controller所独享,如果不想独享,使用WebBindingInitializer注册即可。
PropertyEditor 被限制为只能 String<——>Object 之间转换, 不能 Object<——>Object, Spring3 提供了更强大的类 型转换( Type Conversi on) 支持, 它可以在任意对象之间进行类型转换, 不仅仅是 String<——>Object。

13.数据验证( **
流程:
1、 首先进行数据绑定验证,如果验证失败会通过 MessageCodesResolver 生成错误码放入 Errors 错误
2、 数据不合法验证, 通过自 定义的验证器验证,如果失败需要手动将错误码放入 Errors 错误对象;
错误对象和错误消息:什么场景下使用和怎么使用
数据绑定失败的处理方法
数据不合法时候的处理方法:实现Validator接口,实现其中的supports()和validate()方法即可;

5. 处理器拦截器详解(**

1.类似于Servlet中的filter过滤器
2.应用场景
日志记录(信息统计,计算PV);
权限检查(登录认证);
性能监控;
通用行为;
OpenSessionInView
3.拦截器接口和适配器
HanderInterceptorAdapter,其中preHander(),postHander(),afterCompletion
实现这个接口,并在xml中在Controller下的属性中进行相应的配置即可达到目的
举例:性能监控,记录这个Controller耗时情况( ); 登录认证( ):

6. 注解式控制器详解

1.常见的注解;
2.注解式控制器运行流程及处理器定义
@Controller
@RequestMapping
窄化请求映射:在类名上为父,在方法上为子;
请求映射规格:URL路径映射(普通URL映射;URI映射;Ant风格映射;正则表达式映射;或 映射)
请求方法限定:限定为post或者get ,@RequestMapping(value=”create”,method = RequestMethod.POST)
请求参数数据限定:@RequestMapping(Params=”create”),匹配 http://xx/params1?create
请求数据中指定参数名和没有指定参数名
请求数据中指定参数名=数据和!=数据
请求数据中参数名之间是”且“关系
请求头(header)数据和上面类似
: 请求数据中指定参数名和没有指定参数名; 请求数据中指定参数名=数据和!=数据; 请求数据中参数名之间是”且“关系;

第六章 注解式控制器详解 ——生产者消费者模式

1.基本概念(Http中传输的类型)
Media Type 媒体类型——即请求的内容类型或响应的内容类型
Context-Type内容类型:请求头的内容类型,即发送到服务器的内容数据的媒体类型
(key/Value数据类型、JSON数据类型)
@RequestMapping(value=”/response/Content-Type“,headers=”Content-Type = application/json”)
Accept:告诉服务器,我需要什么样的媒体类型(举例:xml数据和Json数据)
@RequestMapping(value=”/response/Content-Type“,headers=”Accept = application/json”)
2.生产者消费者流程图
生产者和消费者的理解:谁产生数据、封装数据,谁就是生产者,反之,谁就是消费者
1.生产者、消费者注解使用前提:在xml中配置
2.功能处理方法是消费者时:
@RequestMapping(value=”/consumes”,consumes=”{application/json}”),consumes表示消费者
@RequestMapping(value=”produces”,produces=”{application/json}”),
3.窄化时是覆盖,而不是继承:
即在生产者、消费者模式下,方法级别的映射覆盖类级别的映射;在其他模式下,方法级别的映射 继承消费级别的映射;
4.组合使用的是“或”关系

你可能感兴趣的:(spring,mvc)