Struts2拦截器控制session失效

com.opensymphony.xwork2.interceptor.AbstractInterceptor; 

import javax.servlet.http.HttpServletResponse; 
import org.apache.struts2.ServletActionContext; 
import com.huangt.bean.SystemUser; 
/* session过期、登录有效性及操作的权限验证拦截器 */ 
@SuppressWarnings("serial") 
public class LoginedCheckInterceptor extends AbstractInterceptor { 
/** 拦截请求并进行登录有效性验证 */ 
public String intercept(ActionInvocation ai) throws Exception { 
HttpServletRequest request = (HttpServletRequest)ai.getInvocationContext().get(StrutsStatics.HTTP_REQUEST);
//取得请求的URL 
String url = ServletActionContext.getRequest().getRequestURL().toString(); 
HttpServletResponse response = ServletActionContext.getResponse(); 
response.setHeader("Pragma","No-cache"); 
response.setHeader("Cache-Control","no-cache"); 
response.setHeader("Cache-Control", "no-store"); 
response.setDateHeader("Expires",0); 
//对登录与注销请求直接放行,不予拦截 
if (url.indexOf("login.action")!=-1 || url.indexOf("logout.action")!=-1){ 
return ai.invoke(); 
} 
else{
//验证Session是否过期 
if(!ServletActionContext.getRequest().isRequestedSessionIdValid()){ 
//session过期,转向session过期提示页,最终跳转至登录页面 
return "tologin"; 
} 
else{ 
HttpSession session = request.getSession();
String userId = (String)session.getAttribute(SessionConstant.SESSION_USER)
//验证是否已经登录 
if (userId == null){ 
//尚未登录,跳转至登录页面 
return "tologin"; 
}else{ 
return ai.invoke(); 

} 
} 
} 
} 
} 

你可能感兴趣的:(cache,servlet,struts,xwork2,opensymphony)