Servlets HTTP状态404-Servlet。。。。不可用

Servlets HTTP状态404-Servlet。。。。不可用,servlets,servletexception,Servlets,Servletexception,我使用eclise创建如下servlet: package hello; public class NewServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException

我使用eclise创建如下servlet:

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>");
 }
}
我检查了文件夹:WEB-INF或其他任何文件夹,但看不到file.class


这是如何导致的,我如何解决它?

需要注册servlet并映射到特定的URL模式,以便能够通过HTTP请求执行它们。给定HTML代码,您似乎希望servlet在
/NewServlet
的URL上侦听

如果您使用的是Tomcat 7,那么只需将
@WebServlet
注释放在类上,并使用该URL模式:

@WebServlet("/NewServlet")
public class NewServlet extends HttpServlet {
    // ...
}
如果出于某种原因,您仍然使用Tomcat6或更老的版本,那么您需要使用老式的
web.xml
方式。一个具体的例子可以在中找到


Eclipse不会在项目浏览器中显示
.class
文件。它将只在导航器中的
/build
文件夹中显示它们。但现在不必担心这一点。

您应该检查IDE中的web inf文件夹,并将servlet映射到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>

新闻服务
新闻服务
新闻服务
/新闻服务
确保这个映射正确完成,并且您的servlet不在任何包或文件夹中(如果是这样的话),然后在servlet标记中写入类名,后跟。和您的servlet名称


如果问题仍然出现,请确保删除servlet的.class文件,然后重新构建项目。(NetBean有一个选项“清理并构建,然后运行”)没有使用eclipse,但我确信它也有类似的选项。web.xml中的格式应该是这样的

          <servlet-name>NewServlet</servlet-name>
           <servlet-class>PackageName.JavaClass</servlet-class>
NewServlet
PackageName.JavaClass
你的情况是什么

          <servlet-name>NewServlet</servlet-name>
           <servlet-class>Hello.NewServlet</servlet-class>
NewServlet
你好,NewServlet
编辑以下内容: form method=“post”action=“NewServlet”

对此
form method=“post”action=“/(您的项目名称)/NewServlet”


我也有同样的问题,这对我很有效

问题仍然存在。。。它应该是
packageName.ClassName
。。。在这种情况下,应该是hello.NewServlet
          <servlet-name>NewServlet</servlet-name>
           <servlet-class>PackageName.JavaClass</servlet-class>
          <servlet-name>NewServlet</servlet-name>
           <servlet-class>Hello.NewServlet</servlet-class>