1.session 自动失效的时候 更新数据。
解决方法:写一个类 实现HttpSessionListener(只有2个类),再根据需求,重写一下方法。
方法一、sessionCreated (作用于session 创建的时候)
方法二、sessionDestroyed(作用于session 失效的时候)
2.限制权限,可以在StateMachine.xml 文件中加 <Access>标签。
3.关闭浏览器(刷新和关闭),update数据库-清空已保存的session
解决方案:
1.在<body>加onbeforeunload事件(最好不用onunload),onkeydown事件 是监听F5-刷新的。
备注:Onbeforeunload是正要去服务器读 取新的页面时调用,此时还没开始读取;而onunload则已经从服务器上读到了需要加载的新的页面,在即将替换掉当前页面时调用。Onunload是无 法阻止页面的更新和关闭的。而 Onbeforeunload 可以做到。
2.在invalidate()方法中,可以模仿 form提交,则server端收到请求后,就可以做想做的事情了。
<body οnkeydοwn="keyDwonEvent(event)" οnbefοreunlοad="invalidate()">
js文件中:
var clickF5=false; var clickRefresh=false; var clickAltF4=false; var clickTaskBarClose=false; function keyDwonEvent(e) { var currKey=0,e=e||event; currKey=e.keyCode||e.which||e.charCode; clickF5 = (currKey==116); if(currKey==115&&e.altKey){ clickAltF4=true; } else { clickAltF4=false; } }; document.onmouseout = function() { clickTaskBarClose=true; }; document.onclick = function() { clickRefresh=false; clickTaskBarClose=false; clickAltF4=false; }; document.οncοntextmenu=function() { clickRefresh=true; }; document.οnmοusemοve=function(){ clickTaskBarClose=false; }; function invalidate(){ if ((!clickF5&&!clickRefresh)&&(clickAltF4||clickTaskBarClose)) { document.forms[0].action = "xxxxxxxx"; document.forms[0].method = 'post'; document.forms[0].submit(); } }
4.验证GUID 的正则表达式
//check filename ,it must like guid format
//validation GUID (8-4-4-4-12)
String regx = "^[A-Za-z0-9]{8}-[A-Za-z0-9]{4}-[A-Za-z0-9]{4}-[A-Za-z0-9]{4}-[A-Za-z0-9]{12}$";
Pattern pattern = Pattern.compile(regx);
if (null == sFileName || "".equalsIgnoreCase(sFileName)) {
return;
}
Matcher mat = pattern.matcher(sFileName);
if (!mat.find()) {
//invalid
ServletOutputStream out = response.getOutputStream();
String content = "File name["+sFileName+"] is invalid.";
out.write(content.getBytes());
out.flush();
out.close();
return;
}