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

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

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

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

サーブレット

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

Eclipse

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

解決済

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

soredekimarija
soredekimarija

総合スコア0

Java EE

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

サーブレット

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

Eclipse

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

1回答

0評価

0クリップ

265閲覧

投稿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

プロジェクトの構成

イメージ説明

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

K_3578
K_3578

2021/05/12 07:40

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

2021/05/12 08:38

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

2021/05/12 08:40

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

2021/05/12 09:14

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

2021/05/12 09:17

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

2021/05/12 10:26

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

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Java EE

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

サーブレット

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

Eclipse

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