web-dev-qa-db-ja.com

サーブレットが「HTTPステータス404要求されたリソース(/ servlet)は利用できません」を返します

WebContent/jspsフォルダーのJSPファイルにHTMLフォームがあります。 srcフォルダーのデフォルトパッケージにservlet.Javaサーブレットクラスがあります。私のweb.xmlでは、/servletとしてマップされています。

HTMLフォームのaction属性でいくつかのURLを試しました。

<form action="/servlet">
<form action="/servlet.Java">
<form action="/src/servlet.Java">
<form action="../servlet.Java">

しかし、それらのどれも機能しません。それらはすべて、Tomcat 6/7/8で次のようなHTTP 404エラーを返し続けます。

HTTPステータス404 —/servlet

説明:要求されたリソース(/ servlet)は利用できません。

または、Tomcat 8.5/9の場合:

HTTPステータス404 —見つかりません

メッセージ:/ servlet

説明:Originサーバーは、ターゲットリソースの現在の表現を見つけられなかったか、存在することを開示したくない

なぜ機能しないのですか?

80
pongahead

シナリオ#1:コマンドラインから()偶発的に再デプロイ Tomcatはすでに実行されていました

短い答え:Tomcatを停止し、ターゲットフォルダを削除します、mvnパッケージ再配備


シナリオ#2:request.getRequestDispatcher( "MIS_SPELLED_FILE_NAME。jsp")

短い答え:ファイル名をチェックしてくださいスペル、確認してくださいcaseは正しいです。


シナリオ#3:クラスが見つからない例外(Answer put because because:Question#17982240)( TomcatのサーブレットのJava.lang.ClassNotFoundException Eclipseを使用 )(重複としてマークされ、ここに誘導されました)

短い回答#3.1:web.xmlのservlet-classタグのパッケージパスが間違っています。

短い回答#3.2:Javaファイルのインポートステートメントが間違っています。


シナリオ#1の詳細は次のとおりです。


1:Tomcatを停止する

  • オプション1:ターミナルでCTRL + Cを使用。
  • オプション2:(Tomcatの実行中に端末を閉じた)
  • ------------ 2.1:press:Windows + R-> type: "services.msc "
  • ------------ 2.2:リストの「名前」列で「Apache Tomcat#。#Tomcat#」を見つけます。
  • ------------ 2.3:右クリック-> "stop"

2:「ターゲット」フォルダーを削除します。 (mvn cleanはここでは役に立ちません)

3:mvnパッケージ

4:YOUR_DEPLOYMENT_COMMAND_HERE

(鉱山:Java -jar target/dependency/webapp-runner.jar --port 5190 target/*。war)

フルバックストーリー:


偶然新しいgit-bashウィンドウを開き、次の方法でherokuプロジェクトの.warファイルをデプロイしようとしました。

Java -jar target/dependency/webapp-runner.jar --port 5190 target/*。war

展開に失敗した後、2つのgit-bashウィンドウが開いていることに気付き、以前の展開を停止するためにCTLR + Cを使用していなかった.

私に会った:

HTTPステータス404-見つかりませんタイプステータスレポート

メッセージ/if-student-test.jsp

説明Originサーバーは、ターゲットリソースの現在の表現を見つけられなかったか、存在することを開示しません。

Apache Tomcat/8.5.31

以下は、シナリオ#3の詳細です。


シナリオ3.1:web.xmlファイルのservlet-classパッケージパスが間違っています。

Javaサーブレットクラスの先頭にあるpackageステートメントと一致する必要があります。

ファイル:my_stuff /MyClass.Java

   package my_stuff;

ファイル:PRJ_ROOT/src/main/webapp/WEB-INF /web.xml

   <servlet-class>
   my_stuff.MyClass
   </servlet-class>

シナリオ3.2:

MyClass.Javaファイルの先頭に間違った「package」ステートメントを配置しました。

例えば:

ファイルは次の場所にあります: "/ my_stuff"フォルダー

あなたは間違って書きます:

package com.my_stuff

これは次の理由で注意が必要です。

1:mavenビルド(mvnパッケージ)はここでエラーを報告しません。

2:web.xmlのservlet-class行には、正しいパッケージパスを含めることができます。例えば:

<servlet-class>
my_stuff.MyClass
</servlet-class>

使用スタック:Notepad +++GitBash+Maven+Heroku Web App Runner+Tomcat9+Windows10

1
J.M.I. MADISON

NetBeans IDEのHTTP Status 404のソリューション:プロジェクトを右クリックしてプロジェクトのプロパティに移動し、実行をクリックして、index.jspなどのプロジェクト相対URLを入力します。

  1. プロジェクト->プロパティ
  2. 実行をクリックします
  3. 相対URL:/index.jsp(プロジェクトのルートURLを選択)

enter image description here

0
O R Imon

私の問題は、メソッドに@RequestBodyアノテーションがなかったことです。注釈を追加した後、404例外を受信しなくなりました。

0
THE_DOM

古いスレッドですが、他の場所で見つけられなかったため、もう1つの可能性があります。

servlet-api 3.0 +を使用している場合、web.xmlはNOT include metadata-complete="true"属性である必要があります

enter image description here

これにより、Tomcatは、web.xmlアノテーションを使用する代わりに、@WebServletで指定されたデータを使用してサーブレットをマップします。

0

次の2つの手順を実行します。 Javaサーブレットアプリケーションの開発中に、Tomcatサーバーで「404が見つかりません」という問題が解決されることを願っています。

ステップ1:Right click on the server(in the server Explorer tab)->Properties->Switch Location from workspace metadata to Tomcat server

ステップ2:Double Click on the server(in the server Explorer tab)->Select Use Tomcat installation option inside server location menu

0
Sajal Saha

Spring Frameworkライブラリである古いWebライブラリを削除しました。そして、ライブラリの新しいパスを作成します。その後、動作します。

0
pajarnas