struts ajax不跳转页面,struts2 拦截器 跳转页面 ajax

当前位置:我的异常网» 热门搜索 » struts2 拦截器 跳转页面 ajax

struts2 拦截器 跳转页面 ajax

www.myexceptions.net  网友分享于:2013-01-21   搜索量:108次

场景:struts2拦截器中,发现session过期,怎么在拦截到的ajax请求后跳转页面

struts2拦截器中,发现session过期,如何在拦截到的ajax请求后跳转页面

日前遇到的如下问题:struts2的拦截器中进行了session的过期验证,如果过期,拦截到请求之后,跳转到登陆页面,但是这种方式,在处理form表单直接提交的时候是好用的,如果前台使用了ajax来提交这个表单,在session过期后提交表单页面无法跳转,请问大家知道这个问题如何解决吗?最好是通用的解决办法。。

jsp页面ajax:

$(function(){

$("#button1").click(function(){

$.ajax({

url:"/backUpAction_create",

type:"POST",

data:$("#form").serialize(),

dataType:"json",

success:function(data){

var obj = eval(data);

if(obj.error!=""){

alert(obj.error);

}else if(obj.success!=""){

window.location.href="dbJobInfo_getJobDetailUI?jobId="+obj.success;

}else if(obj.unsuccess!=""){

alert(obj.unsuccess);

}

}

});

});

});

struts2拦截器:

@Override

public String intercept(ActionInvocation invocation) throws Exception {

ctx = ActionContext.getContext();

request = (HttpServletRequest) ctx

.get(org.apache.struts2.StrutsStatics.HTTP_REQUEST);

System.err.println("CheckPrivilegeInterceptor.intercept()");

String url = invocation.getProxy().getActionName();

if (url.endsWith("UI")) {

url = url.substring(0, url.length() - 2);

}

UserSession userSession = (UserSession) ActionContext.getContext()

.getSession().get("userSession");

if (userSession != null) {

// get current user

User user = userSession.getUser();

if (user == null) {

// user not login

// if user want to login or logout

// invoke

// else to login UI

if (invocation.getProxy().getAction() instanceof LoginLogoutAction) {

return invocation.invoke();

} else {

return "loginUI";

}

} else {

// user has login

// get user sessionid

String sessionId = user.getSession_id();

// get user sessionid from db

String sessionId1 = userManager.get(user.getId())

.getSession_id();

// if equals

// invoke

if (sessionId == null || sessionId1 == null) {

return invocation.invoke();

} else {

if (sessionId.equals(sessionId1)) {

// confirm privilege

// User.getPrivilegeByUrl

if (request.getParameter("operation") != null) {

value = Integer.parseInt(request

.getParameter("operation"));

if (value == 0) {

return invocation.invoke();

} else {

if (user.hasPrivilege(value)) {

return invocation.invoke();

} else {

request.setAttribute("message",

"You haven't the privilege!");

return "message";

}

}

} else {

return invocation.invoke();

}

} else {

ctx = ActionContext.getContext();

request = (HttpServletRequest) ctx

.get(org.apache.struts2.StrutsStatics.HTTP_REQUEST);

if (request.getSession(false) != null) {

request.getSession(false).removeAttribute(

"userSession");

request.getSession(false).invalidate();

}

return "loginUI";

}

}

}

} else {

if (invocation.getProxy().getAction() instanceof LoginLogoutAction) {

return invocation.invoke();

} else {

return "loginUI";

}

}

}

------解决方案--------------------

**.action

在**.action里面打印返回值信息

文章评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值