springmvc架构流程
//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才调用