关于禁止直接访问登陆后跳转的相关界面拦截

来源:互联网 发布:关于大数据的毕业设计 编辑:程序博客网 时间:2024/06/18 14:08

在跳转主页的时候我们需要判断是否登录,如果直接访问主页 而没有登陆的时候则是需要被强制退出的。这就用到了所谓的拦截器。


创建一个LoginInterceptor 类,代码如下:

> /**  >  * 登录认证的拦截器 >    */>    public class LoginInterceptor implements    > HandlerInterceptor{       //创建一个log4j日志管理器的实例,用于写日志   protected Logger    > log4j = Logger.getLogger(getClass());    >     /**     >      * Handler执行完成之后调用这个方法     >      */      >     public void afterCompletion(HttpServletRequest request,      >             HttpServletResponse response, Object handler, Exception exc)      >             throws Exception {      >               >     }      >       >     /**     >      * Handler执行之后,ModelAndView返回之前调用这个方法     >      */      >     public void postHandle(HttpServletRequest request, HttpServletResponse response,      >             Object handler, ModelAndView modelAndView) throws Exception {      >     }      >       >     /**     >      * Handler执行之前调用这个方法     >      */      >     public boolean preHandle(HttpServletRequest request, HttpServletResponse response,      >             Object handler) throws Exception {      >         //获取请求的URL      >         String url = request.getRequestURI();     >       //判断拦截的 //      log4j.info("---requestURI:" + url);    >         //URL:login.jsp是公开的;这个demo是除了login.jsp是可以公开访问的,其它的URL都进行拦截控制   //       if(url.indexOf("login.json")>=0){   //            return    > true;   //        }      >         if(url.indexOf("login.jsp")>=0){      >             return true;      >         }      >         //获取Session      >         HttpSession session = request.getSession();      >         String username = (String)session.getAttribute("username");      >               >         if(username != null){      >             return true;      >         }      >         //不符合条件的,跳转到登录界面   //       request.getRequestDispatcher("/view/login.jsp").forward(request,    > response);      >         response.sendRedirect("/BillingSystem/");    >         return false;      >     }      }

创建好了拦截器类之后,我们需要去使用这个类,在配置文件中去调用它。在本项目中使用的是SpringMvc所以在mvc-servlet文件中进行如下配置:

<mvc:interceptors>              <!-- 多个拦截器,顺序执行 -->              <mvc:interceptor>                   <!-- 需拦截的地址 -->              <mvc:mapping path="/*.json" />              <mvc:mapping path="/*.action" />              <!-- 需排除拦截的地址 -->            <mvc:exclude-mapping path="/login.json"/>                <bean class="com.lotuscard.javax.utils.LoginInterceptor"></bean>              </mvc:interceptor>   </mvc:interceptors> 就如上代码所示,拦截所有.json.action请求,出去login.json以外的所有请求。拦截之后的具体操作由LoginInterceptor决定

以上就是关于登录界面的拦截器。暂时先这么多吧, 以后想到什么再来补充 。
欢迎讨论

新浪微博 @我家女人从不撒娇

阅读全文
0 0