首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

表单交付 Session过期

2012-08-22 
表单提交 Session过期在表单提交时,经常会发生session 失效的问题。此时就需要强制用户重新登录。对此场景的

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



热点排行