两步处理session过期处理-使用过滤器并重新登录

如何处理session过期后的问题

首先新建servlet页面,删除所有内容,并实现Filter,实现原理,判断当前session是否为空,如果不是,继续跳转到应该跳转的页面,如果为空,跳转到登录页。

package com.lwk.servlet;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;


public class SessionFilter implements Filter {
	@Override
	public void destroy() {
	}
	@Override
	public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
			throws IOException, ServletException {
	     HttpServletRequest request = (HttpServletRequest) req;
	     HttpServletResponse response = (HttpServletResponse) res;
		 HttpSession session = request.getSession();
	        //判断session是否过期
	        if (session.getAttribute("id") == null) {
	            String errors = "请重新登录!";
	            request.setAttribute("message", errors);
	            //跳转至登录页面
	            request.getRequestDispatcher("login.jsp").forward(request, response);
	        } else {
	            chain.doFilter(request, response);
	        }

	}

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

第二步配置web.xml,其中url-pattern里面的servlet要写跳转的servlet,既你想在哪些页面验证session,session-timeout设置的是session的存活时间,这里设置的是60分钟。

  <session-config>
    <session-timeout>60</session-timeout>
  </session-config>
  <filter>
    <filter-name>SessionFilter</filter-name>
    <filter-class>com.lwk.servlet.SessionFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>SessionFilter</filter-name>
    <url-pattern>/CostServlet/*</url-pattern>
    <url-pattern>/DrugServlet/*</url-pattern>
    <url-pattern>/ItemServlet/*</url-pattern>
    <url-pattern>/LiveServlet/*</url-pattern>
    <url-pattern>/PrescriptionServlet/*</url-pattern>
    <url-pattern>/TongServlet/*</url-pattern>
  </filter-mapping>

附加:当session为空时,跳转到的是登录页面,但是无法跳出框架,会出现类似下图的情况(登录页面出现在框架里),这时候需要在登录页面的js中添加下面这句话就OK了。

if (window != top){
    top.location.href = location.href;
}

我的文章对您有帮助吗,如果有的话可以微信请我吃根辣条吗? 点个赞也行

猜你喜欢

转载自blog.csdn.net/weixin_42886104/article/details/87952499