SpringMVC 拦截器(可用于验证账户登录返回页面无Seesion拦截请求)

SpringMVC xml配置文件:

<!-- 配置用于session验证的拦截器 -->
    <!-- 
        如果有多个拦截器满足拦截处理的要求,则依据配置的先后顺序来执行
     -->
<mvc:interceptors>
    <mvc:interceptor>
        <!-- 拦截所有的请求,这个必须写在前面,也就是写在【不拦截】的上面 -->
        <mvc:mapping path="/**" />
        <!-- 但是排除下面这些,也就是不拦截请求 -->
        <mvc:exclude-mapping path="/index" />
        <mvc:exclude-mapping path="/login" />
        <mvc:exclude-mapping path="/frame" />
        <bean class="com.msym.cloudnote.interceptors.SessionInterceptor" />
    </mvc:interceptor>
</mvc:interceptors>

拦截器的代码:

 

package com.msym.cloudnote.interceptors;

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;

/**
 * 判断是否登录的拦截器
 */
public class SessionInterceptor  implements HandlerInterceptor {

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

    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
            throws Exception {
        
    }

    public boolean preHandle(HttpServletRequest req, HttpServletResponse res, Object handel) throws Exception {
        HttpSession session = req.getSession();
        // 从session当中获取特定的数据
        Object obj = session.getAttribute("userSession");
        if (obj == null) {
            // 未登录,重定向到登录页面
            res.sendRedirect(req.getContextPath()+"/login.html");
            return false;
        }
        // 已登录,继续向后调用
        return true;
    }
}

 

posted @ 2021-08-24 16:03  Sakimir  阅读(12)  评论(0)    收藏  举报