Spring MVC基础

springmvc架构流程


Spring MVC基础
//springmvc三大组件:处理器映射器,处理器适配器,试图解析器
//需要用户开发的组件:handler,view
//@RequestMapping:定义请求url到处理器功能方法的映射
//处理器映射器根据请求url找到具体的处理器,生成处理器对象返回给前端控制器
//前端控制器通过处理器适配器调用处理器

配置处理器映射器和处理器适配器,在springmvc.xml下配置
          <mvc:annotation-driven>
视图解析器支持jsp视图解析

@RequestParam用于处理简单类型的绑定

使用pojo接收表单数据     //pojo对象中的属性和表单中input的name属性一致即可,会自动将请求参数赋值给pojo属性

自定义参数绑定需要配置转换器converter

参数问题
post提交可以在web.xml中配置一个过滤器
get提交可以对参数进行重新编码,tomcat默认编码是iso-8859-1

springmvc与struts2不同
1.springmvc入口是一个servlet,而struts2入口是一个filter过滤器
2.springmvc是基于方法开发(一个url请求对应一个方法),将请求参数传递到方法中参数
     struts是基于类开发,传递参数是通过类属性(模型驱动,属性驱动),只能是多例的
3.struts2采用值栈存储请求和响应数据,springmvc是将数据和视图封装成ModelAndView对象,通过request域传输到页面

如果程序发生异常可以配置异常处理器来解决

json数据交互
@RequestBody     将读到的内容转换为java对象并绑定到Controller方法的参数上
@ResponseBody     将Controller返回的参数转换为指定的数据格式,通过response响应给客户端


拦截器配置
编写一个类实现HandlerInterceptor接口,实现三个方法
//controller执行前调用preHandle     按拦截器定义顺序调用
//controller执行后未返回视图前调用postHandler     按拦截器定义逆序调用
//controller执行后且视图返回后调用afterCompletion     按拦截器定义逆序调用

postHandler在被拦截器链内所有拦截器返回true后调用
afterCompletion只有preHandle返回true才调用