SSH架构的自定义filter

来源:互联网 发布:erp java 开发工具 编辑:程序博客网 时间:2024/06/03 22:05

打算弄一个自定义的拦截器,在检测到session中的用户 信息为null也就是没登录或者登陆超时的情况下跳转到登陆页面。

web.xml配置如下

<filter><filter-name>userLogin</filter-name><filter-class>com.pwq.util.UserFilter</filter-class></filter><filter-mapping><filter-name>userLogin</filter-name><url-pattern>*.jsp</url-pattern></filter-mapping><filter-mapping><filter-name>userLogin</filter-name><url-pattern>*.action</url-pattern></filter-mapping>

拦截下来jsp和action的url。


import java.io.IOException;import javax.servlet.FilterChain;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;import org.apache.struts2.dispatcher.FilterDispatcher;public class UserFilter extends FilterDispatcher{/*拦截器,发现没有登录跳到登录页面*/public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {String url = ((HttpServletRequest) request).getRequestURL().toString();//System.out.println(url);String temp = (String) ((HttpServletRequest) request).getSession().getAttribute("username");if(url.endsWith("/paoBlog/") && temp != null) {request.getRequestDispatcher("/mainPage.jsp").forward(request,response);}//登出logout,登陆login和验证码getyzm.action、getcaptcha.action都不进行拦截else if (url.indexOf("login.jsp")>0 || url.endsWith("/paoBlog/") ||url.indexOf("getcaptcha.action")>0 || url.indexOf("getyzm.action")>0 ||(url.indexOf("login.action")>0 || url.indexOf("logout.action")>0)) {chain.doFilter(request, response);} else if (temp == null) { //如果seesion不存在返回登陆页面System.out.println("还没有登录,跳转到登陆界面。");request.getRequestDispatcher("/login.jsp").forward(request,response);}else chain.doFilter(request, response);}}



0 0
原创粉丝点击