1

eclipse と tomcat 7 で単純な Web アプリを実行しようとしています。テキスト入力とサーブレットを呼び出す送信ボタンを含むインデックス html ファイルです。

動的 Web プロジェクトを作成し、html (index.html) ファイルを WebContent フォルダーに配置しました。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>title</title>
</head>
<body>
    <form action="/TestServ" method="get">
        <input type="text" name="input">
        <input type="submit" value="Send it!">
    </form>
</body>
</html>

/Java Rescouces/src の下にパッケージ com.testing.web があり、その中に次のようなサーブレット (TestServ.java) があります。

@WebServlet("/TestServ")
public class TestServ extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public TestServ() {
        super();
        // TODO Auto-generated constructor stub
        System.out.println("AA%WU^SDJI&^R&KU");
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        System.out.println("AA%WU^SDJI&^R&KU");
    }
}

プロジェクトで [実行] -> [サーバーで実行] を選択すると、index.html ファイルが正常に読み込まれます。問題は、フォームを送信すると、次のエラー ページが表示されることです。

HTTP ステータス 404 - /TestServ

-------------------------------------------------- ------------------------------

タイプ ステータス レポート

メッセージ/TestServ

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


-------------------------------------------------- ------------------------------

アパッチ トムキャット/7.0.34

私は検索して検索しましたが、私に役立つ解決策が見つかりませんでした。Web に関するほとんどの回答は、サーブレットの URL マッピングの誤りを指摘しています。私はそれらの多くを無駄に試したことに注意してください。

さらに、ランタイム環境オプションで jdk1.7.0_10 を使用するようにサーバーが構成されていることを追加したいと思います。

最後に、プロジェクトのビルド時にEclipseがWEB-INFの下に適切なクラス/構造を作成しない理由がわかりません。

私は完全に困惑しており、どんな助けも大歓迎です。事前にどうもありがとうございました!

4

3 に答える 3

4

最後に問題が見つかりました。いつものように、それは最も単純なことでした。

フォーム内のアクションは次のようにする必要があります。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>title</title>
</head>
<body>
    <form action="/TestProj/TestServ" method="get">
        <input type="text" name="input">
        <input type="submit" value="Send it!">
    </form>
</body>
</html>

URL マッピングは次のとおりです。

<servlet>
    <servlet-name>TestServ</servlet-name>
    <servlet-class>com.testing.web.TestServ</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>TestServ</servlet-name>
    <url-pattern>/TestServ</url-pattern>
  </servlet-mapping>

率直に言って、私はその理由を完全には理解していません。とにかく /Testproj をアプリのルートと見なすべきではありませんか? :/ ともかく...

于 2013-01-17T14:15:45.050 に答える
0

404 エラーを削除するには、web.xml と、タブで指定した URL を確認する必要があります。URL は http://<127.0.0.1:8080>// のようにする必要があります。Webサービスアプリケーションの場合

于 2014-01-21T06:23:29.140 に答える
-1

サーバー構成に問題はありません。web.xml ファイルにいくつかの変更が必要です。これを試してみてください!

  1. 「web.xml」ファイルを開きます。
  2. <display-name>これらのタグを " " タグと " "タグの間に追加します<welcome-file-list>

    <servlet> <servlet-name>TestServ</servlet-name> <servlet-class>TestServ</servlet-class> </servlet>

    <servlet-mapping> <servlet-name>TestServ</servlet-name> <url-pattern>/TestServ</url-pattern> </servlet-mapping>

  3. プロジェクトを実行し、ブラウザーで URL を「http://localhost:8080/TestServ」と入力します。

それがうまくいくことを願っています!:)

PS * 実際には、「<servlet-name>」タグの間で任意の名前を使用できます。ただし、両方の場所の名前は同じでなければなりません。

于 2015-06-09T12:13:22.240 に答える