在做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