SpringMVC 拦截器

简介: 1.前言SpringMVC中的Interceptor拦截器用于拦截Controller层接口,表现形式有点像Spring的AOP,但是AOP是针对单一的方法。Interceptor是针对Controller接口以及可以处理request和response对象。


1.前言


SpringMVC中的Interceptor拦截器用于拦截Controller层接口,表现形式有点像Spring的AOP,但是AOP是针对单一的方法。Interceptor是针对Controller接口以及可以处理request和response对象。


只有SpringMVC的工程才能使用拦截器😎


2.HandlerInterceptor接口的定义


在该接口中,定义了以下三个方法:


public interface HandlerInterceptor {
    boolean preHandle(HttpServletRequest var1, HttpServletResponse var2, Object var3) throws Exception;
    void postHandle(HttpServletRequest var1, HttpServletResponse var2, Object var3, ModelAndView var4) throws Exception;
    void afterCompletion(HttpServletRequest var1, HttpServletResponse var2, Object var3, Exception var4) throws Exception


preHandle:


在访问到达Controller之前执行,如果需要对请求做预处理,可以选择在该方法中完成

返回值为true:继续执行后面的拦截器或者Controller

返回值为false:不再执行后面的拦截器和Controller,并调用返回true的拦截器的afterCompletion方法


postHandle:


在执行完Controller方法之后,渲染视图之前执行,如果需要对响应相关的数据进行处理,可以选择在该方法中完成


afterCompletion:


调用完Controller接口,渲染View页面后调用。返回true的拦截器都会调用该拦截器的afterCompletion方法,顺序相反。


3.自定义拦截器和使用


首先编写一个拦截器类,实现HandlerInterceptor接口:


public class MyInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("处理前...");
        return true;
    }
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("处理后...");
    }
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("清理...");
    }
}


在Spring配置文件中进行配置:


<!-- 拦截器配置 -->
<mvc:interceptors>
    <mvc:interceptor>
        <!-- 拦截路径匹配 -->
        <mvc:mapping path="/HelloController/**"/>
        <!-- 注册拦截器 -->
        <bean class="top.imustctf.config.MyInterceptor"/>
    </mvc:interceptor>
</mvc:interceptors>


此时访问路径:


http://localhost:8080/HelloController/xiu


控制台会输出拦截器的提示信息:


处理前...
处理后...
清理...


一个简单的拦截器demo就完成啦!

目录
相关文章
|
10月前
|
前端开发 Java Spring
56SpringMVC - 拦截器
56SpringMVC - 拦截器
31 0
|
2月前
|
XML Java 数据格式
|
2月前
|
JSON 算法 Java
SpringMVC(五)【拦截器】
SpringMVC(五)【拦截器】
|
3月前
|
数据采集 监控 前端开发
SpringMVC 拦截器
SpringMVC 拦截器
33 0
|
3月前
|
数据安全/隐私保护
SpringMVC拦截器
SpringMVC拦截器
47 0
|
3月前
springMVC之拦截器
springMVC之拦截器
|
12月前
|
Java
SpringMVC-拦截器
SpringMVC-拦截器
48 0
SpringMVC-拦截器
|
XML 数据格式 容器
springmvc之拦截器
springmvc之拦截器
101 2