2016-10-09 2 views
0

Я делаю проект Fahrenheit для преобразования Цельсия с использованием NetBeans с Tomcat 8.0.37 , когда я пытаюсь запустить проект, я получаю вопрос HTTP Satus 404.Ошибка HTTP-статуса 404. Запрошенный ресурс недоступен. [Netbeans]

Мой 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> 

Мой 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.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");   
      }  
    } 
} 

Пожалуйста, помогите мне решить эту проблему!

Прошу прощения за то, что не являюсь совершенным на английском языке.

+0

можете ли вы отправить URL-адрес, который вы используете для доступа к сервлету. – cody123

+0

@ cody123 http: // localhost: 8080/Conv/и http: // localhost: 8080/conv/test? Temperature = 12 – hyphens2

ответ

1

Вы должны получить доступ к index.html на localhost: 8080/contextRoot/index.html. Действие, связанное с формой, должно отображаться на сервлет, поэтому это должно быть действие = "/ test". Тег класса сервлета в файле web.xml должен указывать полное имя класса сервлета, например mypackage.TestServlet. Вы можете избежать использования web.xml и сэкономить некоторое время, используя аннотацию в классе Servlet, как это описано здесь https://docs.oracle.com/javaee/7/tutorial/servlets004.htm#BNAFU. Также смотрите здесь аналогичный пример https://stackoverflow.com/a/2395262/6848537

+0

Я также нашел пример, где действие сопоставляется с URL-адресом без косой черты: https://docs.oracle.com/javaee/7/tutorial/servlets016.htm – chess4ever

 Смежные вопросы

  • Нет связанных вопросов^_^