SSM6 11-27 SpringMvc过滤器和异常处理

try catch:处理异常

throw/throws:不处理 抛出

jvm中断程序运行 打印错误信息

web:经典三层模型:

dao(mapper)

service

web层

异常抛给web层Controller类的方法,每个方法可能处理异常,可能处理异常代码相似,造成重复代码重复编写

web层再往上抛     ->  前端控制器

SpringMVC处理异常机制如下

异常处理器实现:

  • 第一种方式:实现SpringMVC提供的全局异常处理器接口HandlerExceptionResolver
  • 第二种方式:基于注解@ControllerAdvice(标记的类,作为Controller类的通知(增强)类),底层是AOP模式,那么就会很灵活,这个通知类,不需要实现某个接口,继承某个类

第一种方式:

1.异常处理

1.异常分类:

1)系统异常(jdk自带异常),程序有问题

2)业务异常(自定义异常),用户不正当操作导致。

在我们编写的类的方法中  使用throw new自定义一查各类

判断异常类型 -> instanceof

往model里添加不同数据

把这个类交给spring管理

第二种方式

去掉上面这个

MyBookException.java

异常的advice异常通知类 对controller类的方法的增强

@ControlleAdvice

public class BookExceptionController{

@ResponseBody
public Map handleException(BookBaseException){

}



}

throw throws throwable

在处理异常的方法上使用@ExceptionHandler表示这个方法处理那种异常

如果响应json数据给前端,在方法上添加@ResponseBody注解

登录

这个实现类需要注入mapper

异常类

2.文件上传组件

SpringMVC对commits-fileupload的封装
提供文件上传组件: CommonsMultipartResolver 使用的时候,只需要在springmvc的配置文件中配置

提供了接收文件类型的数据类型: MultipartFile

前端要求:

  1. 提交方式: post
  2. 如果是ajax请求的content-type: multipart/form-data 
  3. 表单提交: enctype= multipart/form-data  

controller 进行参数绑定

后台要求

common-fileUpload

  • 导入依赖
  • 在springmvc的配置文件中配置CommonsMultipartResolver
  • 在Controller方法使用MultipartFile接收文件

3.拦截器(Springmvc  过滤器是javaweb的)

Interceptor

filter

1.过滤器是Javaweb的技术,只要是javaWeb项目就可以使用,拦截器是SpringMVc框架的,项目中添加SpringMVC依赖,才可以使用

2.过滤器配置/*,拦截所有资源请求,拦截器,/** 拦截的经过前端控制器的请求

3.执行时间,过滤器先执行,拦截器是否执行

没有经过前端控制器不会拦截


拦截器的实现

1.编写一个类实现拦截器接口Handlerlnterceptor

亦可以是作为异常处理器使用

排除请求 那些url(自定义)

拦截器里面的方法一定都执行吗?它们的顺序是什么?

一个拦截器的执行流程

客户端的请求先经过拦截器的PreHandler()->返回true放行请求可以继续请求,返回false时请求结束,

下一个就是执行处理器当中的方法->再进入拦截器PostHandle()->再走到拦截器的AfterCompletion

->如果上一步都完成了,说明请求完成

多个浏览器的

谁先配谁先执行 -Ainterceptor ->Binterceptor  此时A  B都放行 都会到目标资源

规律:

1. preHandle()执行顺序与mvc:interceptor顺序一致, postHandl
afterCompletion()与
mvc:interceptor顺序相反

2.处理器能不能执行,要求所有的拦截器的preHandle()返回true才执行

3.只要某个拦截器的preHandle()方法返回true,这个拦截器的afterCompletion()一定执行

拦截器中Prehandle()用的比较多

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值