在跳转主页的时候我们需要判断是否登录,如果直接访问主页 而没有登陆的时候则是需要被强制退出的。这就用到了所谓的拦截器。
创建一个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决定
以上就是关于登录界面的拦截器。暂时先这么多吧, 以后想到什么再来补充 。
欢迎讨论
新浪微博 @我家女人从不撒娇