1、java监听器代码
package com.yihaodian.pis.util;
import java.util.Map;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
import com.yihaodian.pcs.web.action.LoginAction;
public class UserFilter extends AbstractInterceptor{
@Override
public String intercept(ActionInvocation actionInvocation) throws Exception {
Object action = actionInvocation.getAction(); //获得拦截器对象
//如果获得的拦截器为LoginAction,则不进行拦截
if(action instanceof LoginAction){
return actionInvocation.invoke();
}
//确认session中用户是否存在
Map session = actionInvocation.getInvocationContext().getSession();
Object login = (Object) session.get("admin");
//如果用户不为空,则退出拦截。否则跳入LOGIN
if(login != null){
System.out.println("拦截器:合法用户登录---");
return actionInvocation.invoke();
} else {
System.out.println("拦截器:用户未登录---");
return Action.LOGIN;
}
}
}
2、在web.xml里设置超时时长
<session-config> <session-timeout> 120 </session-timeout > </session-config>
3、在struts.xml里进行配置
<interceptors>
<interceptor name = "loginFilter" class = "com.yihaodian.pis.util.UserFilter"></interceptor>
<interceptor-stack name="userstack">
<interceptor-ref name="loginFilter"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="userstack"></default-interceptor-ref>
<global-results>
<result name="login" type="redirect">
/webpage/login/login.jsp
</result>
<result name="error">
/webpage/exception/global_err.jsp
</result>
</global-results>
<global-exception-mappings>
<exception-mapping result="error" exception="java.lang.Exception"></exception-mapping>
</global-exception-mappings>
注意先后顺序不能调换