106

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

actionHTMLフォームの属性でいくつかの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) は利用できません。

または、Tomcat 8.5/9 では以下のように:

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

メッセージ: /サーブレット

説明: オリジン サーバーは、ターゲット リソースの現在の表現を見つけられなかったか、存在することを開示する意思がありません

または、Tomcat 10 の以下のように:

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

タイプ: 近況報告

メッセージ: 要求されたリソース (/servlet) は利用できません

説明: オリジン サーバーは、ターゲット リソースの現在の表現を見つけられなかったか、存在することを開示する意思がありません

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

4

19 に答える 19

153
于 2012-07-31T00:24:34.553 に答える
0

私もこの問題に直面していました。サーブレットにリンクされていることがわかっている URL パターンにアクセスすると、404 を受け取りました。その理由は、@WebServletnameパラメータが同じ文字列として設定された 2 つのサーブレットがあったためです。

@WebServlet(name = "ServletName", urlPatterns = {"/path"})
public class ServletName extends HttpServlet {}
@WebServlet(name = "ServletName", urlPatterns = {"/other-path"})
public class OtherServletName extends HttpServlet {}

nameパラメータはどちらも同じです。name パラメーターを使用している場合は、それらがアプリケーションの他のすべてのサーブレットと比較して一意であることを確認してください。

于 2020-11-22T13:27:04.720 に答える
0

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

servlet-api 3.0+を使用している場合、 web.xmlに属性を含めないでくださいmetadata-complete="true"

ここに画像の説明を入力

これは、注釈web.xmlを使用する代わりに、で指定されたデータを使用してサーブレットをマップするように tomcat に指示します。@WebServlet

于 2019-07-31T10:26:14.220 に答える