j2ee之struts2攔截器()
阿新 • • 發佈:2017-06-14
xtend 導入 ati cat imp color row 針對 所有
struts2的基本配置以及jar包的導入就不說了只寫關鍵部分:
<struts> <package name="userPackage" extends="struts-default">
<interceptors>
<!-- 自己寫的一個攔截器 --> <interceptor name="loginCheck" class="com.xinzhi.interceptor.MyInterceptor"></interceptor> <interceptor-stack name="login_interceptor"> <interceptor-ref name="defaultStack"></interceptor-ref> <interceptor-ref name="loginCheck"></interceptor-ref> </interceptor-stack> </interceptors>
<action name="user_*" class="com.xinzhi.action.UserAction" method="{1}" >
<!-- 執行攔截器,寫在action外面是攔截所有資源,寫在裏面是針對action內部資源進行攔截 --> <interceptor-ref name="login_interceptor"></interceptor-ref>
<!-- 獲取的攔截器返回值及跳轉頁面 --> <result name="loginDefaulUser">/login.jsp</result>
<result name="loginUser" type="redirectAction">user_list</result> <result name="listUser">/WEB-INF/list.jsp</result> </action> </package> </struts>
自己寫的一個攔截器的類要繼承AbstractInterceptor
package com.xinzhi.interceptor; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.AbstractInterceptor; public class MyInterceptor extends AbstractInterceptor { @Override public String intercept(ActionInvocation invocation) throws Exception { ActionContext invocationContext = invocation.getInvocationContext();//拿到ActionContext String method = invocation.getProxy().getMethod();//調用代理獲取方法名稱 if (!"login".equals(method)) { Object object = invocationContext.getSession().get("userInfo"); if (object != null) { return invocation.invoke();//執行方法 } else { return "loginDefaulUser"; } } else { return invocation.invoke(); } } }
j2ee之struts2攔截器()