SSM整合(统一响应,拦截器)
统一响应
如果不设置统一相应格式,前端人员处理数据会变得困难
引入统一响应格式Result
public class Result {private Object data;private Integer code;private String msg;public Result() {}public Result(Object data, Integer code) {this.data = data;this.code = code;}public Result(Object data, Integer code, String msg) {this.data = data;this.code = code;this.msg = msg;}
异常处理器
集中地、统一的处理项目中的异常
异常处理的两个难点:
1、如何向上抛异常
2、如何处理多种异常
异常分类:
1、业务异常:用户行为出现的异常
2、系统异常:可预计无法避免的异常
3、其他异常:编程人员未预期的异常
处理:
1、发送消息传递给用户,提醒规范异常
2、发送固定消息传递给用户,安抚用户(运维人员维护,记录日志)
3、发送固定消息传递给用户,安抚用户(编程人员处理,记录日志)
拦截器
动态拦截方法调用的机制,在SpringMVC中动态拦截控制器方法的执行
作用:
在指定的方法调用前后执行预先设定的代码
阻止原始方法的执行
和过滤器(Filter)区别:
归属不同:Filter属于Servlet技术,Interceptor属于SpringMVC技术
拦截内容不同:Filter对所有访问进行增强,Interceptor针对SpringMVC的访问
入门案例
1、制作拦截器功能类
2、配置拦截器的执行位置
1.声明拦截器的bean,实现HandlerInterceptor接口
2.定义类继承WebMvcConfigurationSupport类,实现addInterceptor方法
3.添加拦截器并设定拦截器的访问路径,路径可以通过可变参数设置多个
简化开发:
使用标准接口WebMvcConfigurer简化开发(SpringMvcConfig实现该接口)
缺点:侵入性较强
拦截器参数:
request:请求参数
response:响应对象
handler:被调用的对象处理器对象,本质上是一个方法对象,对反射技术中的Method对象进行了在包装
ex:如果处理器执行过程中出现异常对象,可以针对异常情况进行单独处理
拦截器执行顺序:
1、当配置多个拦截器时,形成拦截器链
2、拦截器链的运行顺序参照拦截器添加顺序为准
3、当拦截器中出现对原始处理器的拦截,后面的拦截器均终止运行
4、当拦截器运行中断 仅运行配置在前面的拦截器的afterCompletion操作
SpringMVC完结