使用IDEA时,让JSP如何防止用户跳过登录界面

最近在练习写javaweb项目,在写好了登录界面的时候,突然想到:如果有人更改地址栏,直接跳过登录界面该怎么办?于是找了很多资料,通过这些资料不断试错,找到了可行的方法。

这是我的工程文件目录,登录的jsp是“index.jsp”,判断登录是否成功是“success.jsp”。“MyFilter”就是自己设置的拦截器,防止用户跳过登录界面。

MyFilter代码如下:

public class MyFilter implements Filter {
    public static final String logout_page = "/index.jsp";

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest)servletRequest;
        HttpServletResponse response = (HttpServletResponse)servletResponse;
        String currentURL = request.getRequestURI();
        String ctxPath = request.getContextPath();
        //除掉项目名称时访问页面当前路径
        String targetURL = currentURL.substring(ctxPath.length());
        HttpSession session = request.getSession(false);
        //对当前页面进行判断,如果当前页面不为登录页面
        if(!("index.jsp".equals(targetURL))){
            System.out.println("1"+targetURL+",ctxPath:"+ctxPath+",currentURL:"+currentURL);
            //在不为登陆页面时,再进行判断,如果不是登陆页面也没有session则跳转到登录页面,
            System.out.println(session.getAttribute("adminuser"));
            if(session == null || session.getAttribute("adminuser") == null){
                response.sendRedirect(logout_page);
                return;
            }else{
                //这里表示正确,会去寻找下一个链,如果不存在,则进行正常的页面跳转
                filterChain.doFilter(request, response);
                return;
            }
        }else{
            //这里表示如果当前页面是登陆页面,跳转到登陆页面
            filterChain.doFilter(request, response);
            return;
        }
    }

    @Override
    public void destroy() {

    }
}

 

这是自定义了一个接口,三个实现的方法,主要就是doFilter()方法,里面进行判断。

思路也很简单,首先判断是不是在自己的登录界面,如果是自己的登录界面,那就直接跳转到登录界面就可以了。

如果不是,那先判断之前是否登录过。是否登录过呢,就要通过session去判断,这个添加的位置一般设置在登录成功的方法后面。以我自己的"success.jsp"里面的判断为例:

在验证了账号密码都正确后,使用"session.setAttribute(String , Object)"这个方法设置一个值,再去MyFilter里面去检查这个值是否为空。如果为空,则会跳转回登录界面。

拦截器写好之后,就可以去配置了。找到web.xml这个文件,设置拦截器:

<url - pattern>的意思网上有很多更容易理解的解释,这里我简单说一下,就是要对哪一块进行拦截。我这里的值得意思是,工程目录里的"jsp"文件夹下的所有。

为了方便,我吧登录界面“index.jsp”和检查登录是否成功的“success.jsp”放在了同一级目录下。如果你的这两个文件不是在同一级目录下,则MyFilter之中一些跳转就需要进行更改。

另外呢,如果你想要设置这个session里面值得存活时间,你可以在web.xml里面进行设置:

超过15分钟后,session就会失效。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值