struts2中自定義使用者session失效攔截器
阿新 • • 發佈:2019-02-20
一、自定義攔截器類,繼承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"/>