spring拦截器判断用户是否登陆

Spring拦截器

1.配置一个拦截器

创建一个类,实现HandlerInterceptor接口,重写方法
@Override
    public boolean preHandle(HttpServletRequest req, HttpServletResponse resp, Object o) throws Exception {
    
    
    	//设置请求编码格式
        req.setCharacterEncoding("UTF-8");
        //获取请求路径(简短)
        String url = req.getServletPath();
        //输出路径
        System.out.println("URL:"+url);
        if(!url.equals("")){
    
    
            //判断session中是否有值
            DevUserDto devUser = (DevUserDto) req.getSession().getAttribute("devUser");
            if(devUser == null){
    
    
                //没有对应的session,说明用户未登陆
                System.out.println("没有登陆,请登陆");
                //跳转登陆页面(注意这个地方的路径,需要在设置拦截器的时候,把这个路径排除掉)
                resp.sendRedirect(req.getContextPath() + "/page/dev/dev_login");
                return false;
            }
        }
        return true;
    }

2.springmvc.xml配置文件

<!--拦截器-->
    <mvc:interceptors>
        <mvc:interceptor>
        	<!--拦截所有的请求,在排除不拦截的-->
            <mvc:mapping path="/**"/>
            <!--前往登陆页面不拦截-->
            <!--<mvc:exclude-mapping path="/dev/dev_login" />-->
            <!--第一次登陆或者当没有登陆时,拦截器跳转不拦截-->
            <mvc:exclude-mapping path="/page/dev/dev_login" />
            <!--登陆时,跳转登陆方法,不拦截-->
            <mvc:exclude-mapping path="/devUser/devLogin" />
            <!--静态资源不拦截-->
            <mvc:exclude-mapping path="/images/**" />
            <mvc:exclude-mapping path="/css/**" />
            <mvc:exclude-mapping path="/fonts/**" />
            <mvc:exclude-mapping path="/js/**" />
            <mvc:exclude-mapping path="/comments/**" />
            <!--配置自定义拦截器-->
            <bean class="com.ceh.handler.MyLoginHandler"></bean>
        </mvc:interceptor>
    </mvc:interceptors>

猜你喜欢

转载自blog.csdn.net/weixin_43431123/article/details/112057217
今日推荐