做後臺管理系統需要有到登錄驗證功能,所以今天覆習了一下struts2的自定義攔截器,對登錄驗證,和對權限進行驗證
攔截器可以自由擴展,所有的攔截器都實現自Interceptor接口,實現自定義攔截器也要實現Intercepter接口,一般繼承AbstractInterceptor抽象類即可。
下面做了個驗證用戶是否登錄的例子:
LoginInterceptor.java:
package interceptor;
import java.util.Map;
import model.Admin;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
public class LoginInterceptor extends AbstractInterceptor {
public String intercept(ActionInvocation invocation) throws Exception {
//通過invocation獲取本次調用的上下文
Map<String, Object> session = invocation.getInvocationContext().getSession();
//判斷是否登錄
Admin admin = (Admin) session.get("nowUser");
if(admin==null){
//如果沒有登錄,將跳轉到登錄頁面
return "toLogin";
}else {
//如果登錄,程序正常運行
return invocation.invoke();
}
}
}
接下來需要配置struts.xml文件:
<interceptors>
<interceptor name="loginInterceptor" class="interceptor.LoginInterceptor"></interceptor>
</interceptors>
<global-results>
<result name="toLogin">/login.html</result>
</global-results>
<action name="toIndex" class="action.LoginAction" method="toIndex">
<interceptor-ref name="loginInterceptor"></interceptor-ref>
<result>/index.html</result>
</action>
配置struts.xml文件是需要注意package裏面元素的順序,參考文章:http://blog.csdn.net/lc448986375/article/details/8027150