servlet中,登录是否过期过滤器简单实现,虽成功但第一次登录也会弹出过期提示的问题解决(本文:路径问题)

本文介绍了在JavaWeb中实现登录过滤器时遇到的问题,特别是登录后首次访问页面也会触发过期提示的错误。通过分析getPath方法获取的路径类型,探讨了不同场景下的解决方案,强调了理解代码含义以避免复制粘贴带来的潜在bug。
摘要由CSDN通过智能技术生成

在做javaweb的登录页面时候,肯定是需要有一个登录过期判断的问题。
我也是在跟着大家学习后,发现我做的登录界面,在第一次登录时也会弹过期提示,于是我便开始了我的探索之路。

下面讲讲登录过滤器的实现、问题解决和Path到底是什么 (非spring系列)

我给登录拦截分2种情况,
一种是我们不通过登录页面,直接访问本来应该通过登录才能访问的页面,那么在页面出现之前,就先进行拦截,看看是否有登录信息。
还有一种是,我们太久没使用到页面,导致登录过期了。

我们通过判断登录用户信息是否存在,来判定是否登录。而要想页面上存住我们的登录信息以便判断,那我们可以用到session来存这个登录信息。页面向服务器发起一次请求,服务器会生成一个session,但只会生成一个,在页面中的cookie中可以找到JSSESSIONID,这个即是生成的session id。它会在你登录直到退出时,一直存在。除非你清空cookie或者session过期了。

HttpSession的过期时间,我这里顺便提一下两种设置方法:
一种是在xml文件里,默认是30 分钟 ,这里是10分钟

<session-config>
        <session-timeout>10</session-timeout>    
</session-config>

一种是在代码里配置,这里是600

session.setMaxInactiveInterval(600);  //这里的单位是S

好了,接下来看一下我写的登录Filter

@WebFilter(urlPatterns ={
   "*.jsp"},filterName = "IsLoginFilter")
public class IsLoginFilter implements Filter {
   
	//重写三个方法
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
   
		System.out.println("登录过滤器正在初始化");
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
   

        HttpServletRequest request = (HttpServletRequest) servletRequest;
        HttpServletResponse response = (HttpServletResponse) servletResponse;
        HttpSession session = request
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值