0

現在、GET 値をチェックして値を書き込むサーブレットを実行しようとしています。

ここに私のクラス:

    import java.io.IOException;

    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    public class Servlet extends HttpServlet {

        /**
         * 
         */
        public Servlet() {
            // TODO Auto-generated constructor stub
        }

        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            final String myValue = request.getParameter("MyValue");
            if (myValue != null && !myValue.isEmpty()) {
                response.getWriter().write(myValue);
            }
        }

    }

とてもシンプルですよね?

次のような結果を表示できるように、すでに多くのURLを試しました。

 - http://localhost:8080/Servlet/servlet/Servlet
 - http://localhost:8080/Servlet/servlet/Servlet?MyValue=Test
 - http://127.0.0.1:8080/Servlet/servlet/Servlet
 - http://127.0.0.1:8080/Servlet/servlet/Servlet?MyValue=Test

私のコードに何か問題がありますか、それとも私の日食の問題ですか?

どうも

4

2 に答える 2

2

問題の症状については何も言われませんでしたが、すべての試行で HTTP 404 エラー ページが表示されると思いますよね?

サーブレットを URL パターンにマップする必要があります。まず、サーブレット クラスがパッケージに配置されていることを確認する必要があります (com.exampleこの回答では想定しています)。

まだ Java EE 5 (または J2EE..) を使用している場合は、webapp に登録します/WEB-INF/web.xml(Eclipse で自動生成されているはずです)。

<servlet>
    <servlet-name>servlet</servlet-name>
    <servlet-class>com.example.Servlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>servlet</servlet-name>
    <url-pattern>/servlet</url-pattern>
</servlet-mapping>

(サーブレット名は基本的にインスタンス変数名であり、アプリケーション全体で 1 つしかありません。サーブレット クラスは明らかに FQN です。URL パターンはサーブレットの Web コンテンツ相対 URL です)

または、すでに最新の Java EE 6 を使用している@WebServlet場合は、URL パターンを値として指定する注釈を付けます。

package com.example;

// ...

@WebServlet("/servlet")
public class Servlet extends HttpServlet { 
    // ...
}

いずれにせよ、これは基本的に、サーブレットが webcontent-relative URL の一致をリッスンする必要があることを示しています/servlet。したがって、Web コンテキストのルート パスが であると仮定すると、次の/Servletようになります。

http://localhost:8080/Servlet/servlet

将来的には、 New > Classの代わりにNew > Servletでサーブレット クラスを作成した方が簡単です。これはすべて、ウィザードで自動的に考慮されます。

以下も参照してください。

于 2012-09-20T03:38:36.430 に答える
0

Eclipse でプロジェクトを右クリック -> [プロパティ] -> [Web プロジェクトの設定] を選択すると、コンテキスト ルートを見つけることができます。

于 2012-09-20T03:45:45.447 に答える