前提・実現したいこと
EclipseでJavaサーブレットの勉強をしています。
htmlファイルからサーブレットのPOSTメソッドを使用するというサンプルプログラムを作成しているのですが、画面遷移で下記のようなエラーが発生してしまいます。
「HTTPステータス405 HTTPのPOSTメソッドは、このURLではサポートされていません。」
この原因について誰かヒントをいただけないでしょうか、、
お手数をおかけして申し訳ありません。
よろしくお願いします。
発生している問題・エラーメッセージ
http://localhost:8080/SampleWebProj/question_Servlet.html
から空白に文字列追加、送信ボタンを押した際(doPostメソッドを呼び出した際)に
「HTTPステータス405 HTTPのPOSTメソッドは、このURLではサポートされていません。」
と表示される。
その際のURLは
http://localhost:8080/SampleWebProj/sample
となっており、このURL単体を入力し、移動した際はエラーなく動く。
(doGetメソッドの場合)
該当のソースコード
※web.smlやserver.xmlは基本的に編集していないデフォルトの状態です。
<!- question_Servlet.html --> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html"; charset="UTF-8"> <title>テキスト入力</title> </head> <body> <h1>フォーム送信</h1> <form action="sample" method="POST"> 入力:<input type="text" size="20" name="text1"> <input type="submit" value="送信"> </form> </body> </html>
// SampleServlet.java package jp.tuyano.eclipsebook; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class SampleServlet */ // WebServletアノテーション(このクラスがサーブレットであることを示す) @WebServlet("/sample") public class SampleServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public SampleServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ // HttpServletRequestはクライアントの要求についての情報を受け渡すクラス // HttpServletResponseはサーブレットがクライアント側へ応答を送信する際の処理のためのクラス protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub // データのやり取りをUTF-8のHTMLテキストデータとして固定 response.setContentType("text/html;charset=UTF-8"); // java.ioパッケージ内のPrintWriterというクラスのインスタンス(暗黙オブジェクト) // クライアントへの送信用のインスタンス取得 PrintWriter out = response.getWriter(); // クライアント側へHTML文を送信 out.println("<html><body>"); out.println("<h1>サーブレットの世界へようこそ!</h1>"); out.println("</body></html>"); //response.getWriter().append("Served at: ").append(request.getContextPath()); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub //doGet(request, response); //super.doPost(request, response); response.setContentType("text/html;charset=UTF-8"); request.setCharacterEncoding("UTF-8"); PrintWriter out = response.getWriter(); String str = request.getParameter("text1"); out.println("<html><body>"); out.println("<h1>あなたは、「" + str + "」と書きました。</h1>"); out.println("</body></html>"); } }
試したこと
・プロジェクト内の各ファイルの位置変更
・ビルドパス(ソースフォルダ)の設定
・URLの変更
・Webアノテーションの変更
補足情報(FW/ツールのバージョンなど)
Eclipse 2020 IDE
Apache Tomcat/8.0.53
プロジェクトの構成
回答1件
あなたの回答
tips
プレビュー