常见问题 springmvc 拦截器、过滤器的概念与区别

  1. 拦截器(Interceptor)

    • 拦截器是Spring MVC框架的一部分,用于动态拦截请求处理流程。
    • 它在请求到达控制器(Controller)之前或响应返回给客户端之后,可以对请求和响应进行预处理和后处理。
    • 拦截器是AOP(面向切面编程)思想在Spring MVC中的具体实现之一。
  2. 过滤器(Filter)

    • 过滤器是Servlet规范的一部分,属于Java EE标准。
    • 它用于拦截和处理HTTP请求和响应,在请求到达Servlet之前或在响应返回客户端之前触发(在请求进入Tomcat容器之后,请求进入Servlet之前执行)。
    • 过滤器可以处理的任务包括字符编码设置、跨域处理、安全检查等

拦截器方法:

想要自定义拦截器,需要实现HandlerInterceptor接口。

HandlerInterceptor接口有三个方法,分别是preHandle、postHandle、afterCompletion,关于这三个方法

  • preHandle 方法:该方法在执行器方法之前执行。返回值为Boolean类型,如果返回false,表示拦截,不再向下执行;如果返回true,表示放行,程序向下执行(如果后边没有其他Interceptor,就会执行Controller方法)。所以,此方法可对方法进行判断,决定程序是否继续执行,或者进行一些初始化操作及对请求进行预处理。
  • postHandle方法该方法在执行控制器方法调用之后,且在返回ModelAndView之前执行。由于该方法会在DispatcherServlet进行返回视图渲染之前被调用,所以此方法多被用于处理返回的视图,可通过此方法多被用于处理返回的视图,可通过此方法对请求域中的模型和视图做进一步的修改。
  • afterCompletion方法:该方法在执行完控制器之后执行。由于是在Controller方法执行完毕之后执行该方法,所以该方法适合进行一些资源清理、记录日志信息等处理操作。

程序首先会执行拦截器类中的preHandle()方法,如果该方法的返回值true,则程序继续向下执行处理器当中的方法,否则不在向下执行;业务处理器(即控制器Controller类)处理完请求后,会执行postHandle()方法,然后会通过DispatcherServlet向前端返回响应;在DispatcherServlet处理完请求后,才会执行afterCompletion()方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值