springMVC拦截器

   1.什么是springmvc拦截器

              拦截器通常一般指的是通过拦截从浏览器发往服务器的一些请求来完成某些功能的一段程序代码, 一般在一个请求发生之前,发生时,发生后我们都可以对请求进行拦截

1. 常见应用场景

              日志记录:记录请求信息的日志,以便进行信息监控、信息统计、计算PV(Page View)等。

              权限检查:如登录检测,进入处理器检测检测是否登录,如果没有直接返回到登录页面;

               性能监控:有时候系统在某段时间莫名其妙的慢,可以通过拦截器在进入处理器之前记录开始时间,在处理完后记录结束时间,从而得到该请求的处理时间(如果有反向代理,如apache可以自动记录);

               通用行为:读取cookie得到用户信息并将用户对象放入请求,从而方便后续流程使用,还有如提取Locale、Theme信息等,只要是多个处理器都需要的即可使用拦截器实现。

               OpenSessionInView:如Hibernate,在进入处理器打开Session,在完成后关闭Session。

2. 拦截器执行流程
         拦截器里面有三个方法分别是 preHandler、postHandler、afterHandler

                preHandler:在controller方法执行前 其中三个参数分别是 HttpServletRequest, 请求信息 HttpServletResponse 如果return false 用此参数返回, Object  Handler处理器

                postHandler:在controller方法执行后执行,但是在渲染视图之前,HttpServletRequest , HttpServletResponse , Object , ModelAndView modelandview对数据模型和视图进行处理 可以为null

                afterCompletion:在整个方法处理完成后的回调函数,类似finally,最终执行的方法,但是仅在preHandler返回true后才会执行。如果返回false则使用response          返回。

               多拦截器执行流程

               1. 正常执行流程:
                       HandlerInterceptor1..preHandle..
                       HandlerInterceptor2..preHandle..
                       HandlerInterceptor2..postHandle..
                       HandlerInterceptor1..postHandle..
                       HandlerInterceptor2..afterCompletion..
                       HandlerInterceptor1..afterCompletion..

               2. 中断执行流程
                      HandlerInterceptor1..preHandle..
                      HandlerInterceptor2..preHandle..  (返回false直接返回HandlerInterceptor1..afterCompletion)
                      HandlerInterceptor1..afterCompletion..
     拦截器配置
            1. 实现HandlerInterceptorAdapter
            2. 注册拦截器 在springMvc中添加配置<mvc:interceptors> <bean id="myInterceptor" class="com.admol.web.MyInterceptor" /> </mvc:interceptors>如果需要配置多个拦截器则在 <mvc:interceptors> </mvc:interceptors> 中继续添加即可
     拦截器应用
          登录拦截、post乱码处理等

    1.什么是springmvc拦截器

              拦截器通常一般指的是通过拦截从浏览器发往服务器的一些请求来完成某些功能的一段程序代码, 一般在一个请求发生之前,发生时,发生后我们都可以对请求进行拦截

1. 常见应用场景

              日志记录:记录请求信息的日志,以便进行信息监控、信息统计、计算PV(Page View)等。

              权限检查:如登录检测,进入处理器检测检测是否登录,如果没有直接返回到登录页面;

               性能监控:有时候系统在某段时间莫名其妙的慢,可以通过拦截器在进入处理器之前记录开始时间,在处理完后记录结束时间,从而得到该请求的处理时间(如果有反向代理,如apache可以自动记录);

               通用行为:读取cookie得到用户信息并将用户对象放入请求,从而方便后续流程使用,还有如提取Locale、Theme信息等,只要是多个处理器都需要的即可使用拦截器实现。

               OpenSessionInView:如Hibernate,在进入处理器打开Session,在完成后关闭Session。

2. 拦截器执行流程
         拦截器里面有三个方法分别是 preHandler、postHandler、afterHandler

                preHandler:在controller方法执行前 其中三个参数分别是 HttpServletRequest, 请求信息 HttpServletResponse 如果return false 用此参数返回, Object  Handler处理器

                postHandler:在controller方法执行后执行,但是在渲染视图之前,HttpServletRequest , HttpServletResponse , Object , ModelAndView modelandview对数据模型和视图进行处理 可以为null

                afterCompletion:在整个方法处理完成后的回调函数,类似finally,最终执行的方法,但是仅在preHandler返回true后才会执行。如果返回false则使用response          返回。

               多拦截器执行流程

               1. 正常执行流程:
                       HandlerInterceptor1..preHandle..
                       HandlerInterceptor2..preHandle..
                       HandlerInterceptor2..postHandle..
                       HandlerInterceptor1..postHandle..
                       HandlerInterceptor2..afterCompletion..
                       HandlerInterceptor1..afterCompletion..

               2. 中断执行流程
                      HandlerInterceptor1..preHandle..
                      HandlerInterceptor2..preHandle..  (返回false直接返回HandlerInterceptor1..afterCompletion)
                      HandlerInterceptor1..afterCompletion..
     拦截器配置
            1. 实现HandlerInterceptorAdapter
            2. 注册拦截器 在springMvc中添加配置<mvc:interceptors> <bean id="myInterceptor" class="com.admol.web.MyInterceptor" /> </mvc:interceptors>如果需要配置多个拦截器则在 <mvc:interceptors> </mvc:interceptors> 中继续添加即可
     拦截器应用
          登录拦截、post乱码处理等

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值