zoukankan      html  css  js  c++  java
  • SpringMVC系列(十二)自定义拦截器

    Spring MVC也可以使用拦截器对请求进行拦截处理,用户可以自定义拦截器来实现特定的功能,自定义的拦截器必须实现HandlerInterceptor接口
    – preHandle():这个方法在业务处理器处理请求之前被调用,在该方法中对用户请求 request 进行处理。如果程序员决定该拦截器对请求进行拦截处理后还要调用其他的拦截器,或者是业务处理器去进行处理,则返回true;如果程序员决定不需要再调用其他的组件去处理请求,则返回false。
    – postHandle():这个方法在业务处理器处理完请求后,但是DispatcherServlet 向客户端返回响应前被调用,在该方法中对用户请求request进行处理。
    – afterCompletion():这个方法在 DispatcherServlet 完全处理完请求后被调用,可以在该方法中进行一些资源清理的操作。

    1.实现HandlerInterceptor

     1 package com.study.springmvc.interceptors;
     2 
     3 import javax.servlet.http.HttpServletRequest;
     4 import javax.servlet.http.HttpServletResponse;
     5 
     6 import org.springframework.web.servlet.HandlerInterceptor;
     7 import org.springframework.web.servlet.ModelAndView;
     8 
     9 public class FirstInterceptor implements HandlerInterceptor{
    10 
    11     /**
    12      * 该方法在目标方法之前被调用.
    13      * 若返回值为 true, 则继续调用后续的拦截器和目标方法. 
    14      * 若返回值为 false, 则不会再调用后续的拦截器和目标方法. 
    15      * 
    16      * 可以考虑做权限. 日志, 事务等. 
    17      */
    18     @Override
    19     public boolean preHandle(HttpServletRequest request,
    20             HttpServletResponse response, Object handler) throws Exception {
    21         System.out.println("[FirstInterceptor] preHandle");
    22         return true;
    23     }
    24 
    25     /**
    26      * 调用目标方法之后, 但渲染视图之前. 
    27      * 可以对请求域中的属性或视图做出修改. 
    28      */
    29     @Override
    30     public void postHandle(HttpServletRequest request,
    31             HttpServletResponse response, Object handler,
    32             ModelAndView modelAndView) throws Exception {
    33         System.out.println("[FirstInterceptor] postHandle");
    34     }
    35 
    36     /**
    37      * 渲染视图之后被调用. 释放资源
    38      */
    39     @Override
    40     public void afterCompletion(HttpServletRequest request,
    41             HttpServletResponse response, Object handler, Exception ex)
    42             throws Exception {
    43         System.out.println("[FirstInterceptor] afterCompletion");
    44     }
    45 
    46 }

    2.在springmvc.xml配置定义的拦截器

    1 <mvc:interceptors>
    2         <!-- 配置自定义的拦截器 -->
    3         <bean class="com.study.springmvc.interceptors.FirstInterceptor"></bean>
    4         
    5     </mvc:interceptors>
  • 相关阅读:
    运用Scapy编写类似于Nmap的端口扫描脚本
    centos7 下安装arping工具
    Redis protected-mode属性解读
    centos7编写自己的服务,运行systemctl后卡住了(即shell阻塞了)
    logback日志增加行号
    nginx隐藏版本号server_tokens
    关于数据库Oracle表字段为NVARCHAR2 与Mybatis Generator运用问题
    浅析MySQL的分区(Partition)功能
    浅析PostgreSQL序列(SEQUENCE)、常用序列操作、数据迁移后更新序列流程
    浅析mybatis里的缓存机制
  • 原文地址:https://www.cnblogs.com/leeSmall/p/7847063.html
Copyright © 2011-2022 走看看