Java 错误HTTP状态404。请求的资源不可用。[上网本]

Java 错误HTTP状态404。请求的资源不可用。[上网本],java,jakarta-ee,tomcat8,netbeans-8,Java,Jakarta Ee,Tomcat8,Netbeans 8,我使用带有Tomcat 8.0.37的netbeans进行了一个从华氏到摄氏的转换项目 当我试图运行这个项目时,我遇到了一个问题HTTP Satus 404 My index.html <html> <head> </head> <body> <h3>Please enter Fahrenheit temperature:</h3><p> <form action="/conv/test">

我使用带有Tomcat 8.0.37的netbeans进行了一个从华氏到摄氏的转换项目 当我试图运行这个项目时,我遇到了一个问题HTTP Satus 404

My index.html

<html>
<head>
</head>

<body>

<h3>Please enter Fahrenheit temperature:</h3><p>

<form action="/conv/test"> 
Temperature(F) : <input type="text" name="temperature"><br><br>
<input type="submit" value="Submit">
</form>

</body>
</html>

请输入华氏温度:
温度(F):

My web.xml

<web-app>

  <servlet>
    <servlet-name>testServlet</servlet-name>
    <servlet-class>doGetMethod.TestServlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>testServlet</servlet-name>
    <url-pattern>/test</url-pattern>
  </servlet-mapping>

</web-app>

testServlet
doGetMethod.TestServlet
testServlet
/试验
我的TestServlet.java

public class TestServlet extends HttpServlet 
{
    public void doGet(HttpServletRequest req, HttpServletResponse res) throws javax.servlet.ServletException, java.io.IOException 
    {       
        String temperature = req.getParameter("temperature");
            DecimalFormat twoDigits = new DecimalFormat("0.00");

            try 
            {
              double tempF = Double.parseDouble(temperature);
              String tempC = twoDigits.format((tempF -32)*5.0/9.0);

              PrintWriter out = res.getWriter();
          out.println("<html>");
          out.println("<head>");
          out.println("</head>");
          out.println("<body>");
          out.println("<h3>" + temperature + " Fahrenheit is 
                 converted to " + tempC + " Celsius</h3><p>");              
          out.println("</body>");
          out.println("</html>");
            }
            catch(Exception e)
            {   

              res.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
              "There was an input error");           
            }       
    }
}
公共类TestServlet扩展了HttpServlet { public void doGet(HttpServletRequest-req,HttpServletResponse-res)抛出javax.servlet.ServletException,java.io.IOException { 字符串温度=要求的getParameter(“温度”); DecimalFormat两位数=新的DecimalFormat(“0.00”); 尝试 { double tempF=double.parseDouble(温度); 字符串tempC=2位。格式((tempF-32)*5.0/9.0); PrintWriter out=res.getWriter(); out.println(“”); out.println(“”); out.println(“”); out.println(“”); out.println(“+温度+”华氏度为 转换为“+tempC+”摄氏度”; out.println(“”); out.println(“”); } 捕获(例外e) { res.sendError(HttpServletResponse.SC_内部_服务器_错误, “出现输入错误”); } } } 请帮我解决这个问题


很抱歉,我的英语不够完美。

您应该访问localhost:8080/contextRoot/index.html上的index.html。与表单关联的操作应该映射到servlet,因此它应该是action=“/test”。web.xml中的servlet类标记应该指定servlet类的全名,例如mypackage.TestServlet。您可以避免使用web.xml,并通过在Servlet类上使用注释来节省一些时间,这里也解释了这一点。另请查看此处的类似示例,您应该访问localhost:8080/contextRoot/index.html上的index.html。与表单关联的操作应该映射到servlet,因此它应该是action=“/test”。web.xml中的servlet类标记应该指定servlet类的全名,例如mypackage.TestServlet。您可以避免使用web.xml,并通过在Servlet类上使用注释来节省一些时间,这里也解释了这一点。另请在此处查看类似的示例

是否可以发布用于访问servlet的url。@cody123,以及是否可以发布用于访问servlet的url。@cody123和我还发现了一个示例,其中操作映射到url时没有斜杠:我还发现了一个示例,其中操作映射到url时没有斜杠: