シンプルな Web アプリを構築し、ログイン ページを作成しようとしています。このページは、サーブレットをロードするフォームを含む JSP で構成されています。
GET メソッドを使用してフォームを動作させました。
JSP は次のようになります。
<form method="get" action="Login">
Email:<input name="email"/>
Password:<input name="password"/>
<input type="Submit" value="Log in"/>
そしてサーブレットでは:
@WebServlet(name = "Login", urlPatterns = {"/Login"})
public class Login extends HttpServlet {
/**
* Processes requests for both HTTP
* <code>GET</code> and
* <code>POST</code> methods.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
//Assign variables from the request parameters
String loginFormEmail = request.getParameter("email");
String loginFormPassword = request.getParameter("password");
このコードは機能しますが、URL 文字列にユーザー名とパスワードが含まれているため、明らかにお勧めできません。代わりに POST を使用してこれを実行しようとしましたが、エラーが発生しました。(HTTP ステータス 405 - HTTP メソッド POST はこの URL ではサポートされていません)
POST を使用して JSP からサーブレットにパラメーターを送信する方法を知る必要があります。これには RequestDispatcher オブジェクトの使用が含まれる可能性があると思いますが、私が見つけたすべてのチュートリアルでは、RequestDispatcher を使用してサーブレットから JSP にデータを送信する方法が説明されています。その逆ではありません。Request Dispatcher を使用して、JSP からサーブレットに POST データを送信できますか? また、サーブレットからこれらのパラメーターにアクセスするにはどうすればよいでしょうか? (POST の request.getParameter() に相当するものはありますか?)
POST を使用しても安全ではないことは理解していますが、クエリ文字列にパスワードを含めるよりもはるかに優れた方法であり、セキュリティについては後で考えます。
基本的な質問で申し訳ありません。オンラインで多くのチュートリアルを見つけましたが、この特定の質問に答えるものはないようです。ありがとうございました。