`
wkf41068
  • 浏览: 452833 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

表单提交 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();
}



分享到:
评论

相关推荐

    PHP中怎样保持SESSION不过期 原理及方案介绍

    PHP中如何保持SESSION以及由此引发的一些思考 最近的一个项目,里面有一个比较大的表单,用户完成它需要很多时间,很多用户花了千辛万苦完成之后,一提交发现SESSION过期,系统退出了,所以引起了研究如何设置...

    ASP.NET中防止页面刷新造成表单重复提交执行两次操作

    之前看过别人防刷新的方法,是让页面刷新或...在提交表单时,判断表单中提交上来的Hidden和Session中的标志是否一致,就可以知道是正常的提交表单,还是刷新页面导致的重复提交。需要注意的是,在每次提交表单的处理

    jsp-.rar_flag提交

    jsp防止重复提交 这做最好结合让jsp页面过期一起用。当用户返回到上一表单页面时(按backspase键、返回按钮,右击--返回),让表单页面过期。这样才可以让用户主动的刷新jsp而从新生成一个session.setAttribute(...

    PHP防止post重复提交数据的简单例子

    在某帝国面试的时候问题了这个题: 怎么处理post提交重复的问题, 后来跟@暖阳交流,他说记录时间,我没有明白,我想的是用session在表单页面记录下,然后提交页面判断,如果相等则视为成功,并清空session,但有个问题是如果...

    会话技术之登录状态的保持

    在前面我们学习了Cookie和Session两种会话技术,这个也是比较主流的两种会话...​除了登录页面,还有一个登录成功的显示页面,这个页面可以根据Session的状态来判断用户是否登录和登录是否已经过期(如用户半小时无任

    然之协同办公系统 5.2

    1132 在登录页面长时间断开网络连接session过期导致登录失败;1134 动态是搜索表单需要保证默认的检索条件为空;1135 点击项目跳转的地址不对;1137 session目录检查功能不要关闭;1138 禅道一键安装包安装然之异常...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例172 不提交表单获取单选按钮的值 207 实例173 实现复选框中的全选、反选和不选 208 实例174 隐藏域提交用户的ID值 210 实例175 图像域替代提交按钮 211 实例176 跳转菜单实现页面跳转 213 实例177 上传图片预览 ...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例172 不提交表单获取单选按钮的值 207 实例173 实现复选框中的全选、反选和不选 208 实例174 隐藏域提交用户的ID值 210 实例175 图像域替代提交按钮 211 实例176 跳转菜单实现页面跳转 213 实例177 上传图片预览 ...

    php网络开发完全手册

    17.3 Session应用实例——登录验证 286 17.3.1 数据库设计 286 17.3.2 HTML表单的设计 287 17.3.3 验证页面的编写 287 17.3.4 欢迎页面的编写 288 17.3.5 注销页面的编写 288 17.3.6 代码的运行 289 17.3.7 代码的...

    十天学会ASP.net--我认为ASP.NET比ASP难很多,希望大家做好准备

    以前说到BUTTON控件CausesValidation=true/false来设置按钮提交的表单是不是被检验也就是这里的几个检验控件,如果CausesValidation=true的话按下按钮就会首先检测是不是都通过了检验控件的检验。 下面再说两点: ...

    HttpClient以及获取页面内容应用

    1.6.2Post提交表单(模拟表单提交) /** * post方式提交表单(模拟用户登录请求) */ public void postForm() { // 创建默认的httpClient实例. CloseableHttpClient httpclient = HttpClients.createDefault...

Global site tag (gtag.js) - Google Analytics