SSH架构的自定义filter

打算弄一个自定义的拦截器,在检测到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);
	}
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章