javaweb中如果用户没有登录,不能访问别的页面,只能访问登录页面

1.编写自定义拦截器类

package cn.guang.ssm.utils;

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

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

import cn.guang.ssm.pojo.User;

public class LoginInterceptor  implements HandlerInterceptor{

    /**
     * 执行任何URL都要先执行的方法
     * 返回结果是:true 放行   false 不放行
     *  需要放行的自己就添加  :这里只是放行了登陆 及验证码
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object arg2) throws Exception {
        String uri = request.getRequestURI();
        //1. 放行  登陆请求
        if(uri.contains("login.action")){
            return true;
        }
        //2.放行 验证码生成请求
        if(uri.contains("checkCode.action")){
            return true;
        }

        User user =  (User) request.getSession().getAttribute("user");
        if(user !=null &&  user.getLoginid()!=null &&!"".equals(user.getLoginid())){
            return true;
        }
        request.getRequestDispatcher("/jsp/user/login.jsp").forward(request, response);
        return false;
    }
    @Override
    public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
            throws Exception {
    }

    @Override
    public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
            throws Exception {
        
    }
}

2. 加载自定义拦截器类

    <!-- 4.2  加载自定义拦截器 -->
        <!-- 加载自定义的拦截器 -->
            <mvc:interceptors>
                <mvc:interceptor>
                    <!-- /*/**  拦截多级目录   /items/list.do   /product/brand/add.do -->
                    <mvc:mapping path="/*/**"/>
                    <bean class="cn.guang.ssm.utils.LoginInterceptor"/>
                </mvc:interceptor>
            </mvc:interceptors>

 

猜你喜欢

转载自my.oschina.net/springMVCAndspring/blog/1815722
今日推荐