【笔记】登录拦截器

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

/**
 * @ClassName 类名 : LoginInterceptor
 * @Description 作用 : 登录的拦截器
 */
public class LoginInterceptor implements HandlerInterceptor {

    /**
     * Handler执行之前调用这个方法
     */
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
            throws Exception {
        // 获取请求的URL
        String url = request.getRequestURI();
        String queryString = request.getQueryString();
        // 获取session
        HttpSession session = request.getSession();
        // 当URL以/user开头时,代表链接需要登录才可以打开
        if (url != null && url.indexOf("/user") == 0) {
            // 获取Session
            String username = (String) session.getAttribute("username");
            if(null != queryString && !"".equals(queryString)){
                url = url + "?" + queryString;
            }
            if (username == null || username == "") {
                // 记录初始的路径
                session.setAttribute("targetUrl", url);
                // 重定向到登录页面
                response.sendRedirect("/page/login.html");
                return false;
            }
        }

        return true;
    }

    /**
     * Handler执行完成之后调用这个方法
     */
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception e)
            throws Exception {

    }

    /**
     * Handler执行之后,ModelAndView返回之前调用这个方法
     */
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView model)
            throws Exception {

    }

}

猜你喜欢

转载自blog.csdn.net/jul_11th/article/details/79717726