首页 > 代码库 > SpringMVC 简单拦截器配置

SpringMVC 简单拦截器配置

拦截器的目的就是:用户所属的session不存在后进行对控制器请求的拦截,使跳转到首页或者登陆页面。

1、首先在web.xml中配置dispatcher-servlet.xml 。代码中对应的<servlet-name>中的dispatcher 映射的就是dispatcher-servlet.xml文件

<servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <!-- springmvc 请求后缀 -->
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>*.do</url-pattern><!-- 拦截所有以.do结尾的请求,交于DispatcherServlet处理 -->
    </servlet-mapping>

2、在dispatcher-servlet.xml 文件中配置拦截器需要拦截的目录,其中处理拦截的具体实现类的在第三步新建,对应的包路径需要修改。

 <!-- 配置拦截器 -->
    <mvc:interceptors>
        <mvc:interceptor>
            <!-- 拦截器拦截的URL格式 -->
            <mvc:mapping path="/*.do" />
            <!-- 拦截器不拦截的controller -->
            <mvc:exclude-mapping path="/toLogin.do"/>
            <mvc:exclude-mapping path="/login.do"/>
            <!-- 处理拦截的具体实现类 -->
            <bean class="com.springmvc.interceptor.LoginInterceptor" />
        </mvc:interceptor>
    </mvc:interceptors>

3、新建拦截器具体实现类,注意拦截器的具体实现类继承自类HandlerInterceptorAdapter。

preHandle->postHandle->afterCompletion,这三个方法是依次执行的
public class LoginInterceptor extends HandlerInterceptorAdapter {
    // 继承HandlerInterceptorAdapter类

    // 重写 preHandle()方法,在业务处理器处理请求之前对该请求进行拦截处理
    @Override
    public boolean preHandle(HttpServletRequest request,
                             HttpServletResponse response, Object handler) throws Exception {
        UserModal user  = (UserModal) request.getSession().getAttribute("userInfo");
        if(user == null){
            response.sendRedirect("/toLogin.do");
            return false;
        }
        return true;
    }
    @Override
    public void postHandle(HttpServletRequest request,
                           HttpServletResponse response, Object o, ModelAndView mav)
            throws Exception {
        System.out.println("----------postHandle");
    }

    @Override
    public void afterCompletion(HttpServletRequest request,
                                HttpServletResponse response, Object o, Exception excptn)
            throws Exception {

    }
}

 4、拦截器的基本配置基本配置完成,然后自己写个简单的controller和jsp登录映射验证即可。

  

SpringMVC 简单拦截器配置