權限攔截器如下:
/**
* 權限攔截器
* 攔截非登錄用戶
* @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>