0

これは私のログインサーブレットの投稿方法です

/**
 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
 */
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String login = request.getParameter("login").trim();
    String password = request.getParameter("password");

    User user = getUsersDao().login(login, DigestUtils.shaHex(password));

    if (user == null) {
        request.setAttribute("login", login);
        request.setAttribute("error", "Wrong username or password.");
        forward(request, response, LOGIN_JSP);
    } else {
        request.getSession().setAttribute(USER_SESSION, user);
        response.sendRedirect(LOGGED_IN_URL);
    }
}

whereLOGGED_IN_URL is "WEB-INF/jsp/index.jsp";
と index.jsp はこのアドレスに存在しますが、これはログイン後にのみ機能しません。ユーザーのif条件は問題ありません(falseに設定して確認しました)。

なぜそれが起こるのですか?

4

1 に答える 1

2

フォルダー内のリソースはパブリックにアクセスできません (そうしないと、エンドユーザーが直接開くだけ/WEB-INFで、データソースのユーザー名/パスワードなどの機密情報を見ることができます)。web.xml

パブリックにアクセスできる JSP ファイルを/WEB-INFフォルダーの外に置く必要があります。

LOGGED_IN_URL = "/index.jsp";

次のようにリダイレクトします

response.sendRedirect(request.getContextPath() + LOGGED_IN_URL);

のリソースは/WEB-INFforward と include でのみ使用できます。

于 2013-01-11T14:21:06.023 に答える