注释:以下代码是针对自己的平台而写的(对flex+java做了封装),现给我的思路。
flex前段监听FaultEvent事件
//调用存储过程 public function getCall(procedureName:String, param:Object, resultHandler:Function, faultHandler:Function=null):void { if (resultHandler != null) ro.getCall.addEventListener(ResultEvent.RESULT, resultHandler); if (faultHandler != null){ ro.getCall.addEventListener(FaultEvent.FAULT, create(checkSession,faultHandler)); } ro.getCall(procedureName,param); } //验证用户的session是否过期 public function checkSession(event:FaultEvent,faultHandler:Function):void{ var errorMessage:ErrorMessage=event.message as ErrorMessage; if(errorMessage&&errorMessage.rootCause){ var errorStr:String=errorMessage.rootCause.message; if(errorStr.indexOf("Session失效")!=-1){ AlertTip.show("Session失效,重新登录!",2000,true,{width:220,height:120,style:"AlertTip"}); var timer:Timer = new Timer(2000, 1); timer.addEventListener(TimerEvent.TIMER, gotoLogin); timer.start(); return ; } } faultHandler(event); }
java端在添加日志的时候对Session进行判断
FlexSession session=FlexContext.getFlexSession();
if(session==null){
throw new Exception("Session失效,请重新登录");
}
if(session.getAttribute("user_id")==null){
throw new Exception("Session失效,得不到用户的SessionId");
}