0

私はEclipseを使ってこのようなサーブレットを作成します:

package hello;
public class NewServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    System.out.println("doPost");

    String name = request.getParameter("textField");

    response.setContentType("text/html");
    PrintWriter pw = response.getWriter();
    pw.print("<html><head></head><body><center>");
    pw.print("Hello " + name + "!");
    pw.print("</center></body></html>");
 }
}

および次のようなhtmlファイル:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
<form method="post" action="NewServlet">
    <p align="center">
        <font>Input some text</font> <br> <input type="text"
            name="textFiled"> <br> <input type="submit"
            value="submit"> <br>
    </p>
</form>
</body>
</html>

サーブレットを実行すると、エラーが発生しました:

HTTP Status 404 - Servlet NewServlet is not available

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

type Status report

message Servlet NewServlet is not available

description The requested resource (Servlet NewServlet is not available) is not available.

私はフォルダーをチェックしました:WEB-INFまたは他のフォルダーで、ファイル.classが表示されません

これはどのように発生し、どうすれば解決できますか?

4

4 に答える 4

1

IDE で web-inf フォルダーを確認し、web.xml ファイルでサーブレットをマップする必要があります。

      <servlet>
              <servlet-name>NewServlet</servlet-name>
               <servlet-class>NewServlet</servlet-class>
      </servlet>
       <servlet-mapping>
               <servlet-name>NewServlet</servlet-name>
               <url-pattern>/NewServlet</url-pattern>
        </servlet-mapping>

このマッピングが適切に行われていることを確認し、サーブレットがどのパッケージまたはフォルダーにも含まれていないことを確認してください。およびサーブレット名。

それでも問題が発生する場合は、サーブレットの .class ファイルを削除して、プロジェクトを再度ビルドしてください。同じように

于 2012-10-19T04:49:03.807 に答える
0

サーブレットを HTTP リクエストで実行できるようにするには、サーブレットを登録して特定の URL パターンにマッピングする必要があります。HTML コードを考えると、サーブレットが の URL をリッスンすることを期待しているようです/NewServlet

Tomcat 7 を使用している場合は@WebServlet、正確にその URL パターンでクラスに注釈を付けます。

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

なんらかの理由でまだ Tomcat 6 以前を使用している場合は、昔ながらのweb.xml方法で行う必要があります。具体的な例は、サーブレットの wiki ページにあります。

Eclipse は.class、プロジェクト エクスプローラーにファイルを表示しません。フォルダー内のナビゲーターにのみ表示され/buildます。しかし、これは今心配する必要はありません。

于 2012-06-16T04:20:21.187 に答える
0

web.xml の形式は次のようになります。

          <servlet-name>NewServlet</servlet-name>
           <servlet-class>PackageName.JavaClass</servlet-class>

あなたの場合はどれですか

          <servlet-name>NewServlet</servlet-name>
           <servlet-class>Hello.NewServlet</servlet-class>
于 2014-03-25T07:52:09.943 に答える
0

これを編集: form method="post" action="NewServlet"

この
フォームに method="post" action="/ (あなたのプロジェクト名) /NewServlet"

私は同じ問題を抱えていましたが、これは私にとってはうまくいきました

于 2015-08-22T03:10:20.477 に答える