首页 > 其他分享 >springMvc 整合ssm 和全局异常处理器类编写 和拦截器编写

springMvc 整合ssm 和全局异常处理器类编写 和拦截器编写

时间:2022-10-14 18:34:57浏览次数:65  
标签:拦截器 springMvc 配置 controller 编写 异常 类中

ssm 整合 步骤

 

 

1创建Maven工程项目 添加依赖

 

 

 2 在config包中编写servlet配置类 继承AbstractAnnotationConfigDispatcherServletInitializer 并重写类中 3个方法 让其加载springConfig springMvc  配置拦截路径 让这个路径下的文件都归springmvc处理

 

 

 解决中文乱码问题 也是在这个servlet类中编写

 

 

 

2.1编写spring配置类,在配置类中需要扫描service的包,读取外部配置文件,加载Mybatis相关配置,开启事务注解驱动

 

 



2.1.1创建Mybatis配置类,配置SqlSessionFactoryBean和MapperScannerConfigurer

 

 

 

 

 

2.1.2创建Jdbc配置类,配置DataSource与DataSourceTransactionManager

 

 

 

 

 

 

2.2编写SpringMvc配置类,在配置类中扫描controller的包,开启SpringMVC的注解支持

 

 

 

 

 

3.1创建表与实体类

 

 

 

 

3.2Dao接口的内方法

 

 3.3在Service包中编写BookService的方法 与在service包中的impl包中实现BookServcie

 

 在写事务时候我们要注意 最好编写在service的实现类中具体需要事务的方法上

 

 

 3.4 在controller包中编写BookController 对应的响应体

3.4.1在此之前因为给前段发送的数据要统一在一个类中 不管我们发什么最后都要存放在这个类中 所以我们先编写一个Result 类表示最后的数据接受类

 

 3.4.2 其中code 类表示 查询(添加 修改 删除)数据库成功未成功 给前段人员返回的值 以便辨别成功未成功

 

 

 3.4.3然后我们在编写 controller 控制器给前段响应的数据 与接受前端的请求数据 

我们用三元运算符直接编写 增删改如果成功的话会在类中返回行数是>0的所以我们在Dao层编写时候会在返回值类型上写int 如果>0就表明成功  即下图的flag成立输出CODE.SAVE_OK 给前端返回过去

 

 

 

在查询时候我们判断查询的结果里面的值是不是为null 如果是不是null 表示查询成功 如果为null的话我们要写一个msg (即在 Result类中定义的msg)表示返回的错误信息

 

 

 

全局异常处理器

      项目中首先将异常进行分类,大概分为业务异常、系统异常和其他异常,针对不同的异常使用自定义异常来区分,在项目的个层如果碰到指定的异常,统一将异常网上抛出,最后在SpringMVC层使用全局异常处理器类来对异常进行统一处理。
      自定义异常的实现步骤为:1.编写全局异常处理器类,在类上添加@ControllerAdvice/@RestControllerAdvice,然后在类中针对不同的异常编写方法来进行处理,每个方法上添加@ExceptionHandler(异常类.class),在每个方法中就可以根据业务需求来进行不同的业务处理,比如记录日志、发送消息给运维人员,发送的方式可以通过邮件或者短信来进行发送

 

 

 

自定义异常类 我们要继承RuntimeException  在写一个成员变量code 并在Code类中写一些自己定义的错误信息 主要在自定义异常类中编写setCode getCode方法

 

 

拦截器

使用步骤:
1.编写拦截器类实现HandlerInterceptor接口
2.重写接口中的三个方法preHandle、postHandle、afterCompletion,
preHandle是在handle方法执行之前执行,返回true或者false,true代表放行,false代表拦截
postHandle是在handle方法执行之后执行
afterCompletion是拦截器最后执行的方法
3.配置拦截器类
应用场景:
1.项目中进行鉴权,判断用户是否登录,以及判断用户是否具有访问资源的权限等
2.日志记录,可以对重要的业务进行日志记录,方便后期统计请求访问量
3.对项目的业务进行性能监控,监控请求处理时长等
4.通用行为,如果有多个处理器都需要的业务就可以考虑使用拦截器

 

 

也可以在springMvcConfig中直接实现WebMvcCpnfiger (但是这样不好 因为有稍强的侵略式行为)

 

 

 

过滤器与拦截器有什么不同呢

1.拦截器是基于Java的反射机制而过滤器是基于函数回调
2.拦截器不依赖Servlet容器,过滤器则依赖Servlet容器
3.拦截器主要是针对springmvc的controller请求处理,而过滤器则可以针对集合所有请求起作用
4.拦截器可以获取到controller类及对应方法的相关数据,过滤器则不能获取
5.拦截器中可以使用spring容器中的bean对象,比如service对象,但是过滤器则不行
6.过滤器先于拦截器执行

 

SSM后端与前端交互的流程

1.前端发送请求和数据到后台
2.后台根据业务创建数据库表
3.根据数据库表创建实体类
4.编写Controller类接收请求、接收数据、转发业务层
5.编写Service接口和实现类,调用Mapper层进行数据的增删改查
6.编写Mapper接口,在接口中编写方法与对用的SQL语句
7.controller将处理结果响应给前端
8.前端将后台返回的结果展示给用户

标签:拦截器,springMvc,配置,controller,编写,异常,类中
From: https://www.cnblogs.com/jiayuyao/p/16792577.html

相关文章