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);
	}
}



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