In traditional B/S-based applications, Session Timeout usually redirects to the application's homepage. However, Ajax requests are processed in a different way, next we will briefly introduce the Session Timeout processing for Ajax requests (return to the homepage after timeout)
1. First create a Filter
[Java]
Import java. io. IOException;
Import javax. servlet. Filter;
Import javax. servlet. FilterChain;
Import javax. servlet. FilterConfig;
Import javax. servlet. ServletException;
Import javax. servlet. ServletRequest;
Import javax. servlet. ServletResponse;
Import javax. servlet. http. HttpServletRequest;
Import javax. servlet. http. HttpServletResponse;
Public class AjaxSessionTimeoutFilter implements Filter {
Public void destroy (){
}
Public void doFilter (ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
// Determine whether the session contains user information
If (req. getSession (). getAttribute ("SPRING_SECURITY_CONTEXT") = null ){
// If there is an ajax Request Response Header, x-requested-;
If (req. getHeader ("x-requested-")! = Null & req. getHeader ("x-requested-with"). inclusignorecase ("XMLHttpRequest ")){
Res. setStatus (911); // indicates session timeout
} Else {
Chain. doFilter (req, res );
}
} Else {
Chain. doFilter (req, res );
}
}
Public void init (FilterConfig chain) throws ServletException {
}
}
2. Add the following configuration in web. xml:
[Html]
<Filter>
<Filter-name> ajaxSessionTimeout </filter-name>
<Filter-class> org. tshark. framework. web. filter. AjaxSessionTimeoutFilter </filter-class>
</Filter>
<Filter-mapping>
<Filter-name> ajaxSessionTimeout </filter-name>
<Url-pattern>/* </url-pattern>
</Filter-mapping>
3. Set global parameters for Ajax calls
[Javascript]
$. AjaxSetup ({
ContentType: "application/x-www-form-urlencoded; charset = UTF-8 ",
Complete: function (xhr, textStatus ){
$. Ts. hideLoading ();
// Session timeout
If (xhr. status = 911 ){
Window. location = rootPath + "/"; // return to the application Homepage
Return;
}
}
});