ホームページ > 記事 > ウェブフロントエンド > Ajaxリクエストセッション失敗の問題を解決する方法
HTML + サーブレット + フィルター + jQuery 一般的に、私たちのプロジェクトにはログインフィルターがあり、一般的なリクエストで十分です。ただし、AJAX は例外であるため、解決策はセッションの無効化に対する応答を設定することです。
一般的に言えば、私たちのプロジェクトにはログインフィルターがあり、それを処理するには一般的なリクエストで十分です。ただし、AJAX は例外であるため、解決策はセッションの無効化に対する応答を設定することです。
フィルターとページの JS 設定の 2 つの部分に分かれています。まずフィルターの変更を見てみましょう。コードは簡単なので、あまりコメントしません。次に、JS の部分を見てみましょう。コード。もちろん jQuery ベースです~~
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; import javax.servlet.http.HttpSession; /** * 登录过滤器 * 拥有Session是否失效和用户是否登录2个条件判断 * 如果是ajax请求则设置session超时 * @author Merlin.Ma * */ public class LoginFilter implements Filter{ private String redirectUrl = "/login.html"; private String sessionKey = "userName"; @Override public void destroy() { } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest) request; HttpServletResponse rep = (HttpServletResponse) response; HttpSession session = req.getSession(); if( session == null || session.getAttribute(sessionKey) == null){ //如果判断是 AJAX 请求,直接设置为session超时 if( req.getHeader("x-requested-with") != null && req.getHeader("x-requested-with").equals("XMLHttpRequest") ) { rep.setHeader("sessionstatus", "timeout"); } else { rep.sendRedirect( req.getContextPath() + redirectUrl); } }else { chain.doFilter(request, response); } } @Override public void init(FilterConfig filterConfig) throws ServletException { String url = filterConfig.getInitParameter("redirectUrl"); String key = filterConfig.getInitParameter("sessionKey"); redirectUrl = url == null? redirectUrl:url; sessionKey = key == null ? sessionKey : key ; } }
ページはこの js コードをロードしてから、ajax の呼び出しを開始します。ログインしていないか、セッションが無効な場合は、ログイン ページにジャンプすることが表示されます。
上記は私があなたのためにまとめたものです。
関連記事:
Ajax非同期画像読み込み事例分析Djangoフレームワークでajaxを利用してデータ一括インポート機能を実装AJAX XMLHttpRequestオブジェクトの詳細説明以上がAjaxリクエストセッション失敗の問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。