要进行session是否过期验证,用了2种方式:1、ajax请求,就返回json 2、普通http请求,直接返回登录页。
但是,每次拦截器获取的类型都是"普通http请求"。 在页面我是用的esayUI提供的form提交,默认是ajax方式啊。 怎么回事??? 麻烦各位老师帮我看看
页面:
//修改密码
function serverLogin() {
$('#chpwd').form('submit',{
url:"updatePwd.action",
onSubmit: function() {
return $(this).form('validate');
},
success:function(jsonData){
var data = eval('(' + jsonData + ')');
if(data.success) {
$.messager.alert("修改成功",data.message);
}
if(data.success == false) {
$.messager.alert("修改失败",data.message);
}
}
});
}
拦截器:
@Override
public String intercept(ActionInvocation invocation) throws Exception {
/**
* 拦截器
*/
HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse();
String reqType = request.getHeader("X-Requested-With");//获取请求类型
System.out.println("request type:==============="+reqType);
Map
.getSession();
String sessionInfo = (String)session.get("sessionInfo");//获取设置的session信息
if(null == sessionInfo) {
//ajax请求
if("XMLHttpRequest".equals(reqType) ) {
System.out.println("======================ajax");
PrintWriter pw = response.getWriter();
pw.print("sessionOut");//返回字符串"sessionOut"
pw.flush();
pw.close();
return null;
}
//普通请求
else {
System.out.println("======================http");
return "loginout";
}
}