SpringMVC (six): springMVC interceptor

1. Overview springMVC interceptor

A spring assembly frame provided DispatcherServlet after receiving the request, if the interceptor, the interceptor will first call, then call processor (Controller)

2, write springMVC interceptor

2.1, custom interceptors, and implement an interface HandlerInterceptor

package com.wedu.springmvc.interceptor;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 自定义拦截器:实现HandlerInterceptor接口
 */
public class MyInterceptor1 implements HandlerInterceptor{

    /**
     * 预处理,controller方法执行前
     * return true 放行,执行下一个拦截器,如果没有,执行controller中的方法
     * return false不放行
     * @param request
     * @param response
     * @param handler
     * @return
     * @throws Exception
     */
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("拦截器1:控制器执行前执行...");
        return true;
    }

    /**
     * 后处理方法,controller方法执行后,success.jsp执行之前
     * @param request
     * @param response
     * @param handler
     * @param modelAndView
     * @throws Exception
     */
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("拦截器1:控制器执行后,视图显示之前执行...");
        // request.getRequestDispatcher("/WEB-INF/pages/error.jsp").forward(request,response);
    }

    /**
     * success.jsp页面执行后,该方法会执行
     * @param request
     * @param response
     * @param handler
     * @param ex
     * @throws Exception
     */
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("拦截器1:视图显示界面显示之后执行...");
    }
}

2.2, configure interceptor

    <!-- 配置拦截器 -->
    <mvc:interceptors>
        <!--配置拦截器-->
        <mvc:interceptor>
            <!--要拦截的具体的方法-->
            <mvc:mapping path="/interceptor/*"/>
            <!--不要拦截的方法
            <mvc:exclude-mapping path=""/>
            -->
            <!--配置拦截器对象-->
            <bean class="com.wedu.springmvc.interceptor.MyInterceptor" />
        </mvc:interceptor>
    </mvc:interceptors>

 Note: When there are multiple interceptors to intercept requirements are met, the order is executed in accordance with the configuration.

3, the difference between the interceptor and the filter

  • Filters are part of the servlet specification, any java web project can be used; interceptor is SpringMVC framework of their own, only the use of engineering SpringMVC framework can be used.
  • After the filter configuration / url-pattern in the *, you can block all resources to be accessed; it is the only interceptor to intercept controller method of access, if access is jsp, html, css, image or js is not It will be blocked.
Published 134 original articles · won praise 10 · views 7340

Guess you like

Origin blog.csdn.net/yu1755128147/article/details/103961013