1. 程式人生 > >struts2中自定義使用者session失效攔截器

struts2中自定義使用者session失效攔截器

一、自定義攔截器類,繼承MethodFilterInterceptor類,並重寫doIntercept方法編寫攔截邏輯。(MethodFilterInterceptor類相比AbstractInterceptor少了要實現的方法,其實MethodFilterInterceptor就是繼承AbstractInterceptor)

public class LoginUserInterceptor extends MethodFilterInterceptor {
	
	//攔截方法
	@Override
	protected String doIntercept(ActionInvocation invocation) throws Exception {
		//從session中獲取user物件
		User user = (User) ServletActionContext.getRequest().getSession().getAttribute("loginUser");
		if (user == null) {//使用者未登入
			//返回到登入頁面
			return "login";
		}
		//放行
		return invocation.invoke();
	}

}

二、在struts中配置攔截器,將預設的攔截器加入自定義攔截器棧中,並將系統使用的攔截器改為自己的攔截器
		<!-- 註冊自定義攔截器 -->
		<interceptors>
			<interceptor name="loginUserInterceptor" class="com.itheima.bos.web.interceptor.LoginUserInterceptor">
				<!-- 指定哪些方法不被攔截 -->
				<param name="excludeMethods">login</param>
			</interceptor>
			<!-- 定義攔截器棧 -->
			<interceptor-stack name="mystack">
				<interceptor-ref name="loginUserInterceptor"></interceptor-ref>
				<!-- 將預設攔截器棧加入到自定義攔截器棧中 -->
				<interceptor-ref name="defaultStack"></interceptor-ref>
			</interceptor-stack>
		</interceptors>
		<!-- 使用自己的攔截器棧 -->
		<default-interceptor-ref name="mystack"/>