Spring MVC拦截器

1、如何实现登录权限检查

 使用session进行约定值的检查

实现方法:

(1)使用Filter

(2)使用Spring的拦截器

拦截器组件简介:Spring MVC特有组件,可以在调用Controller之前拦截,也可以在调用Controller之后拦截,还可以在JSP解析完毕向浏览器输出之前拦截。

先创建一个拦截器:

public class LoginInteceptor implements HandlerInterceptor{
    //请求处理完毕,输出之前
    @Override
    public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
            throws Exception {
        System.out.println("afterCompletion");
        
    }
    //进入Controller之后
    @Override
    public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
            throws Exception {
        System.out.println("postHandle");
        
    }
    //进入Controller之前
    @Override
    public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception {
        
        System.out.println("preHandle");
        //false代表请求被拦截截断,不会传递到Controller,true代表请求将继续传递至Controller
        return true;
    }

}

拦截器配置:

(1)只想拦截某一个请求:

<!-- 配置拦截器 -->    
    <mvc:interceptors>
       <mvc:interceptor>
          <mvc:mapping path="/hello.do"/>
          <bean class="com.zlc.inteceptor.LoginInterceptor"></bean>
       </mvc:interceptor>
    </mvc:interceptors>

(2)要拦截多个特定请求:

<!-- 配置拦截器 -->    
    <mvc:interceptors>
       <mvc:interceptor>
          <mvc:mapping path="/hello.do"/>
          <mvc:mapping path="/success.do"/>
          <bean class="com.zlc.inteceptor.LoginInterceptor"></bean>
       </mvc:interceptor>
    </mvc:interceptors>

(3)或者使用通配符,拦截某些请求,还可以使用<mvc:exclude-mapping path=""/>,排除某些请求的拦截

 <mvc:interceptors>
       <mvc:interceptor>        
          <mvc:mapping path="/*"/>
           <!-- 该请求不要拦截 -->
          <mvc:exclude-mapping path="/hello.do"/>
          <bean class="com.zlc.inteceptor.LoginInterceptor"></bean>
       </mvc:interceptor>
    </mvc:interceptors>

 

posted @ 2018-08-04 18:17  梦里下起了雪  阅读(128)  评论(0编辑  收藏  举报