SpringMVC的拦截器

SpringMVC的拦截器

1.拦截器的作用
SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理。开发者可以自己定义一些拦截器来实现特定的功能。

拦截器链(Interceptor Chain):将拦截器按一定的顺序连接成一条链。在访问被拦截的方法或者字段时,拦截器链中的拦截器就会按照之前定义的顺序被调用。

拦截器和过滤器的区别
过滤器:是servlet规范中的一部分,任何JAVAWEB工程都可以使用
拦截器:是SpringMVC框架自己的,只有使用了SpringMVC框架的工程才能使用

过滤器在url-pattern中配置了 /* 之后,可以对所有要访问的资源拦截,拦截器它只会拦截访问的控制器方法,如果访问的是jsp、html、css、image、js 是不会进行拦截的。

2.自定义拦截器的步骤
第1步:编写一个普通类实现HandlerInterceptor接口

public class MyInterceptor implements HandlerInterceptor {
     

    private Logger logger = Logger.getLogger(this.getClass());
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
     
        logger.info("===preHandle===");
        //这里改为true就相当于放行
        return false;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
     
        logger.info("===postHandle===");

    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
     
        logger.info("===afterCompletion===");
    }
}

第二步:配置拦截器

    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/user1/*"/>
            <bean class="com.acoffee.maven.interceptor.MyInterceptor">bean>
        mvc:interceptor>
    mvc:interceptors>

第三步:测试运行结果

@Controller
@RequestMapping(value = "/user1")
public class UserController1 {
     
    private Logger logger = Logger.getLogger(this.getClass());

    @RequestMapping(value = "/list")
    public String list() {
     
        logger.info("==UserController1→→→list==");
        return "welcome";
    }
}

welcome.jsp

--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <h1>恭喜你测试完毕拦截器</h1>
</body>
</html>

执行结果:
在这里插入图片描述
当我们preHandle的返回结果改为true时:
SpringMVC的拦截器_第1张图片
在这里插入图片描述

你可能感兴趣的:(java框架,interceptor,springmvc)