表单提交 Session过期

在表单提交时,经常会发生session 失效的问题。此时就需要强制用户重新登录。对此场景的通用性,抽取一个组件是十分必要的。
该组件主要完成如下工作:
1. 在点击提交的时候,调用后台代码<用于获取session,判断其中有关用户的属性是否存在,如果不存在就说名session失效,原先存在于session中的内容已被系统清空如果存在的话,就让用户提交表单>

考虑到组件的通用性,在通过代码获取session时候,采用一个JSP。
(1) JSP 的代码如下所示:

<%@ page import="com.huawei.it.support.usermanage.helper.UserInfoBean"%>
<%@ page import="com.huawei.it.sso.filter.util.SsoConstants"%>
<%
System.out.println(request.getSession(false));
UserInfoBean uiBean = (UserInfoBean) session.getAttribute(SsoConstants.SESSION_USER_INFO_KEY);
if (uiBean == null|| "anony_hw_support".equals(uiBean.getUid())) {
out.write("false");
}else{
out.write("true");
}
%>


(2) 点击表单提交时激发的JS中通过AJAX的方式访问给JSP.代码如下所示:

/**
* 检查Session是否失效,没有失效就执行毁掉函数表单提交, 如果失效就实行异步登录
*
* @param fun
* 回调函数
*/
function toCheckSession(btn, validate, commitFun) {
$.ajaxSetup({
cache : false
});
if (!(undefined === validate) && !eval(validate)) {
return;
}
$.ajax({
url : "/Support_E_CBB_DEMO/cbb/pages/sessionCheckReBuild/jsp/validator_session.jsp",
dataType : "text",
async : false,
success : function(isUserLogined) {
if ("true" == eval(isUserLogined).toString()) { if (!(undefined === commitFun)) {
eval(commitFun);
} else {
$(btn).parents("form").submit();
}
} else {
showLoginWin();//showLoginWinTwo()
}
}
});
}



//弹出登录框
function showLoginWinTwo() {
alert("Connection time is out, please log in again!");
window.open("http://uniportal-beta.huawei.com/uniportal/?redirect=http://www.huawei.com:8080/Support_E_CBB_DEMO/cbb/pages/sessionCheckReBuild/jsp/success.jsp?","_blank");
}
// 弹出登录框
function showLoginWin() {
/* var locationurl = parent.document.location;
alert(locationurl);*/
var html = " <div id='loginWin' style='display:none;width:350px;height:80px;'>"
+ "Session 失效,请重新登录!"
+ "<a href=\"http://uniportal-beta.huawei.com/uniportal/?redirect=http://www.huawei.com:8080/Support_E_CBB_DEMO/cbb/pages/sessionCheckReBuild/jsp/success.jsp?\" target=\"_blank\" onclick=\"closeDiv();\">点击这里重新登录</a>"
+ "<br><input type=\"button\" value=\">>关闭<<\" onclick=\"closeDiv()\"/>"
+ "</div>";
$("body").append(html);
$("#loginWin").OpenDiv();
}
function closeDiv() {
$("#loginWin").CloseDiv();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值