系统需要Check session是否失效,添加了一个过滤器来check,如果发现没有session,令其页面跳转到登陆页面
java 代码
- import java.io.IOException;
- import java.io.PrintWriter;
- 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.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import javax.servlet.http.HttpSession;
- public class SessionFilter implements Filter {
- private FilterConfig filterConfig = null;
- // 初始化过滤器
- public void init(FilterConfig filterConfig) throws ServletException {
- this.filterConfig = filterConfig;
- }
- // 执行过滤器功能
- public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
- throws IOException, ServletException {
- HttpServletRequest hreq = (HttpServletRequest) request;
- HttpServletResponse hres = (HttpServletResponse) response;
- HttpSession session = hreq.getSession();
- if (session.getAttribute("UserID") != null) // 检查是否失效
- {
- chain.doFilter(request, response);
- return;
- } else {
- // 屏蔽掉login页面,以免在login页面过滤器会去check session
- if ("/login.jsp".equals(hreq.getServletPath())
- || "/login.do".equals(hreq.getServletPath())
- || "/loginInternet.jsp".equals(hreq.getServletPath())) {
- chain.doFilter(request, response);
- return;
- } else {
- PrintWriter out = response.getWriter();
- // 利用JS跳转页面
- out.println("");
- // hres.sendRedirect(hreq.getContextPath());//如果失效了,把视图派发到登录页面
- }
- }
- }
- // 销毁过滤器
- public void destroy() {
- this.filterConfig = null;
- }
- }
同时web.xml需要配置
xml 代码
- <filter>
- <filter-name>sessionCheck</filter-name>
- <filter-class>xxxx</filter-class>
- </filter>
- <filter-mapping>
- <filter-name>sessionCheck</filter-name>
- <url-pattern>*.jsp</url-pattern>
- </filter-mapping>
网上很多地方据说可以在web.xml上直接可以配置mapping,直接让login页面绕过过滤器,自己试了几次不知道怎么弄,最后只好在fliter里面用逻辑判断了
过滤器的使用
最新推荐文章于 2024-05-21 15:52:03 发布
2767

被折叠的 条评论
为什么被折叠?



