/logged/form.jsp
が正しいはずです。appserver ログを読むことをお勧めします。IllegalStateException: response already committed
中身がある可能性大。
待って、待って、あなたの実際の問題は、訪問者がアドレスバーに表示する URL を変更したいということですか?
もしそうなら、いいえ、それはフォワードでは不可能です。次に、反対側から問題を解決することをお勧めします。フォルダに「隠す」だけform.jsp
で、/WEB-INF
常にサーブレットを使用してフォームを取得/投稿します。
擬似:
protected void doGet(request, response) {
request.getRequestDispatcher("/WEB-INF/logged/form.jsp").forward(request, response);
}
protected void doPost(request, response) {
doYourSubmitThingHere();
request.getRequestDispatcher("/WEB-INF/logged/form.jsp").forward(request, response);
}
このサーブレットをurl-pattern
of/logged/form
にマップし、 by を置き換えると、<form method="post" action="/servlet">
by<form method="post" action="/logged/form">
で使用/呼び出すことができますhttp://example.com/logged/form
。
また、ページ コントローラー パターンを採用しHttpServletRequest#getPathInfo()
てリクエスト パス (および JSP ファイルのパス) を取得することで、さらに一歩進んで、JSP ごとに新しいサーブレットを作成する必要がないようにすることもできます。