SpringMVC——拦截器Interceptor

简介

  spring的拦截器interceptor就是web的Filter

部署

<!-- 配置拦截器群 -->
<mvc:interceptors>
    <!-- 配置拦截器 -->
    <mvc:interceptor>
      
       <!-- 配置拦截路径! /** 代表所有 --> <mvc:mapping path="/**"/> <!-- 配置排除操作 path=“排除路径” --> <mvc:exclude-mapping path="/user/login"/>

        <!-- mvc内生成拦截器对象 --> <bean class="xyz.javaswing.Interceptor.PrivilegeInterceptor"/> </mvc:interceptor> </mvc:interceptors>

 

实现

  拦截的使用实现Spring提供拦截器接口:HandlerInterceptor

  重写内部的方法。

 

    boolean preHandle (HttpServletRequest request , HttpServletResponse response , Object handler)      

    参数

      request:拦截的请求对象

      response:拦截的响应对象

      handler:未知

    返回值:boolean

    返回值意义:能否通行。true可以通行,false不可通行

    作用:拦截在响应前做出过滤操作

 

  void postHandle(HttpServletRequest request,HttpServletResponse response , Object Handler,ModelAndView modelAndView)

    参数:

      request:拦截到的请求对象

      response:拦截到的响应对象

      handler:未知

      modelAndView:拦截到的视图对象

    返回值:无

    返回值意义:无

    作用:拦截请求,在视图返回前做出操作。

 

  void afterCompletion(HttpServletRequest request,HttpServletResponse response , Object Handler,Exception ex)

    参数:

      request:拦截到的请求对象

      response:拦截到的响应对象

      handler:未知

      ex:异常对象,未知作用

    返回值:void

    返回值意义:无

    作用:在视图返回后,作操作

 

使用

        <!-- 配置拦截器    -->
    
    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/**"/>
            <!-- 配置排除操作            -->
            <mvc:exclude-mapping path="/user/login"/>
            <bean class="xyz.javaswing.Interceptor.PrivilegeInterceptor"/>
        </mvc:interceptor>
    </mvc:interceptors>
public class PrivilegeInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        // 判断用户是否登陆,session中有无user
        HttpSession session = request.getSession();
        User user =(User) session.getAttribute("user");
        if( user == null ){
            response.sendRedirect(request.getContextPath()+"/login.jsp");
            return false; // 不放行
        }

        // 有user,放行。让它访问啥就访问啥。
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
    }
}

 

上一篇:【启用rabbitmq遇到的问题全】command not found /Crash dump is being written to: erl_crash.dump...done


下一篇:如何在Mybatis-Plus项目中,使用乐观锁