質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

サーブレット

サーブレット(Servlets)とはウェブやアプリケーションサーバー上に動くプログラムのことであり、ウェブブラウザや他のHTTPクライエントとデータベースやHTTPサーバー上のアプリケーションの中間層としての働きをします。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

1回答

2428閲覧

JavaサーブレットのdoPostメソッドを使用した際に画面遷移でエラーが生じる

soredekimarija

総合スコア3

Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

サーブレット

サーブレット(Servlets)とはウェブやアプリケーションサーバー上に動くプログラムのことであり、ウェブブラウザや他のHTTPクライエントとデータベースやHTTPサーバー上のアプリケーションの中間層としての働きをします。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2021/05/07 11:05

前提・実現したいこと

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

プロジェクトの構成

イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

K_3578

2021/05/12 07:40

エラー通りPOSTメソッドが許可されていない、GETメソッドのみが許可されているのかも。 多分内容的にEclipse○○で始めるJavaプログラミング入門だと思うが・・・。
soredekimarija

2021/05/12 08:38

コメントいただきありがとうござます! 確認したところ両方許可されてました。。 先ほどプロジェクト自体を作り直してみたら無事動きました。 おそらくソースファイルやWebコンテンツ格納フォルダをたびたび変更したことが原因かもしれません。。 お手数をおかけしてすみません、 ありがとうございます!????‍♂️
K_3578

2021/05/12 08:40

お、解決されたんですね。良かったです。 質問者さんの回答をBAにして自己解決としてクローズしておいてください。
soredekimarija

2021/05/12 09:14

了解です! いつもありがとうございます????????
K_3578

2021/05/12 09:17

いつも・・・?って思って過去質問見て気付いた。 ユーザー名はよく見かける回答者の人とかじゃないと覚えれないので・・・(記憶力0)
soredekimarija

2021/05/12 10:26

以前もお世話になりました???? また機会がありましたらよろしくお願いします。
guest

回答1

0

自己解決

プロジェクト自体を作り直してみたら無事動きました。

おそらくソースファイルやWebコンテンツ格納フォルダをたびたび変更したことが原因かもしれません。。

投稿2021/05/12 08:39

soredekimarija

総合スコア3

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問