Struts2攔截器設置例外情況

權限攔截器如下:

/**
 * 權限攔截器
 * 攔截非登錄用戶
 * @author Administrator
 *
 */
public class AuthorInterceptor extends AbstractInterceptor{
	@Override
	public String intercept(ActionInvocation arg0) throws Exception {
		
		//如果是登錄請求則直接放行
		Object o = arg0.getAction();
		System.out.println(o.getClass());
		if(o instanceof LoginAction){
			return arg0.invoke();
		}
		
		//攔截非登錄用戶
		//獲取Session
		Map session = arg0.getInvocationContext().getSession();
		
		//判斷用戶是否已登錄
		Users u = (Users)session.get("user");
		if(u==null){
			//未登錄用戶,將被攔截到登錄頁面
			System.out.println("非法請求已被攔截,系統將跳轉到登錄頁面!!!!!!!");
			return "login";
		}else{
			//放行
			return arg0.invoke();
		}
		
	}
}

配置如下:

<struts>
	
	
	<!-- 配置編碼(防止中文亂碼) -->
	<constant name="struts.i18n.encoding" value="utf-8"></constant>
	
	<package name="default" extends="struts-default" namespace="/">
		
		<!-- 攔截器定義 -->
		<interceptors>
			<!--註冊自定義的攔截器 -->
			<interceptor name="auth" class="com.hr.interceptor.AuthorInterceptor"></interceptor>
			<!-- 自定義攔截器棧 -->
			<interceptor-stack name="myStack">
				<!-- 自定義攔截器棧的第一個攔截器一定要配置成系統默認攔截器 -->
				<interceptor-ref name="defaultStack"></interceptor-ref>
				<!-- 將自定義的攔截器加入到自定義的攔截器棧 -->
				<interceptor-ref name="auth"></interceptor-ref>
			</interceptor-stack>
		</interceptors>
		<!-- 將自定義攔截器棧設置爲默認攔截器 -->
		<default-interceptor-ref name="myStack"/>
		
		<!-- 配置默認Action(當其他Action不能匹配的時候自動匹配此Action -->
		<default-action-ref name="defaultAction"/>
		<!-- 定義全局視圖 -->
		<global-results>
			<result name="error">error.jsp</result>
			<result name="404">/404.jsp</result>
			<result name="login">/login.jsp</result>
		</global-results>
		<!-- 定義默認Action -->
		<action name="defaultAction">
			<!-- name屬性默認值爲 success -->
			<result>/404.jsp</result>
		</action>		
		<action name="login" class="com.action.LoginAction">
			<result name="index">index.jsp</result>
		</action>
		<!-- 用戶處理Action -->
		<action name="user" class="com.action.UserAction">
			<!-- 動態結果 -->
			<result type="redirectAction">${nextPos}</result>
			<result name="index">/index.jsp</result>
			<result name="ok">/ok.jsp</result>
			<!-- redirectAction類型用於Action之間的轉發 -->
			<result name="m" type="redirectAction">/manage!mt.action</result>
			<result name="update_user">/user_update.jsp</result>
		</action>
		<!-- 管理Action -->
		<action name="manage" class="com.action.ManageAction">
			<result>/ok.jsp</result>
		</action>
	</package>
</struts>    


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