0

ユーザー入力とログイン手順を管理するURLマッピング「/Login」を使用したログインサーブレットがあります。ただし、ユーザーがログインすると、Webサイトは次のURLに移動します。

http://localhost:8080/pilot_1/Login

それ以外の

http://localhost:8080/pilot_1/checklistallitem

最初のURLは正常に機能し、すべてのデータが表示されますが、URLが希望どおりに表示されない理由はわかりません。これが、ログインサーブレットのdoPostメソッドです。

protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {

    String username = req.getParameter("j_username");
    String password = req.getParameter("j_password");

    if (users.containsKey(username)){
        if ( users.get(username).equals(password)){
            req.getSession().setAttribute("active_window", "Checklist");
            req.getSession().setAttribute("current_team", "allteams");

            getServletContext().getRequestDispatcher("/checklistallteam").forward(req, resp);

        }else{
            JOptionPane.showMessageDialog(null, "Invalid ID or Password");
        }
    }else{
        JOptionPane.showMessageDialog(null, "Invalid ID or Password");
    }
}
4

1 に答える 1

0

これがリダイレクトと転送の違いです。ディスパッチャーでリクエストを転送すると、サーバー側で解決と処理が行われ、最終的なレスポンスが呼び出し元のクライアントに返されます。一方、リダイレクトを発行すると、基本的にクライアントに「この他の URL を呼び出して要求を満たす」ことを伝える中間応答があります。副作用として、クライアントは新しいリソースの URL を認識し、それを反映するためにロケーション バーを更新します。

転送は完全にサーバー側で処理されるため、クライアントのロケーション バーの URL は変更されません。

于 2013-03-19T22:49:43.997 に答える