Extjs非同期セッションタイムアウト問題について処理する.


Extjs非同期sessionのタイムアウト問題処理についてHTTPタイムアウトの判断はフィルタFilterで判断できます.ページがタイムアウトしたら、request.forward()などの方法でログインページにジャンプできます.しかし、Ajaxの要求に対して、request.forwardはどうしようもないです.request.forwardが機能しないのではなく、AJAXの原理でページ全体が更新されません.(PS:request.forward()後のページテキストはXMLHttpRequest.reponseTextで取得できます.そこで私たちは別の方法でジャンプする必要があります.簡単な方法はhttp Statusの状態を設定し、ExtJsが傍受します.
 
JAVA
if(    ){
    if("XMLHttpRequest".equals(request.getHeader("x-requested-with"))){
        response.setStatus(401);
    }
}
 
JAVSCRIPT
 
Ext.Ajax.on('requestcomplete',function(conn,response,options) { 
    if(response.statusText==401){
        Ext.Msg.alert('  ', '    ,     !', function(){
            window.location = 'http://localhost:8080/login.jsp'; 
        });
    }
});