При попытке вызвать сервлет произошла ошибка 404 - PullRequest
0 голосов
/ 07 ноября 2011

Я пытаюсь использовать Apache Tomcat 7.0 Tomcat 7 для доступа к сервлетам Java.

Я создал папку для хранения всех моих файлов веб-приложений в папке ROOT в веб-приложениях.Структура файла выглядит следующим образом.

  • Tomcat 7.0 / webapps / myWebApp
    • HelloHome.html
    • WEB-INF
      • web.xml
      • классы
        • com
          • обучение
            • HelloServlet.java
            • HelloServlet.class

для вызова сервлета, использовался этот код web.xml:

<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app version="3.0"
  xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
  http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

   <!-- To save as "hello\WEB-INF\web.xml" -->

   <servlet>
      <servlet-name>HelloWorld</servlet-name>
      <servlet-class>com.training.HelloServlet</servlet-class>
   </servlet>

   <!-- Note: All <servlet> elements MUST be grouped together and
         placed IN FRONT of the <servlet-mapping> elements -->

   <servlet-mapping>
      <servlet-name>HelloWorld</servlet-name>
      <url-pattern>/sayhello</url-pattern>
   </servlet-mapping>

</web-app>

фактический Java-код (скомпилированный для создания файла класса в папке классов):

//To save as "<TOMCAT_HOME>\webapps\hello\WEB-INF\classes\HelloServlet.java"
package com.training;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class HelloServlet extends HttpServlet {
   @Override
   public void doGet(HttpServletRequest request, HttpServletResponse response)
         throws IOException, ServletException {

      // Set the response MIME type of the response message
      response.setContentType("text/html");
      // Allocate a output writer to write the response message into the network socket
      PrintWriter out = response.getWriter();

      // Write the response message, in an HTML page
      try {
         out.println("<html>");
         out.println("<head><title>Hello, World</title></head>");
         out.println("<body>");
         out.println("<h1>Hello, world!</h1>");  // says Hello
         // Echo client's request information
         out.println("<p>Request URI: " + request.getRequestURI() + "</p>");
         out.println("<p>Protocol: " + request.getProtocol() + "</p>");
         out.println("<p>PathInfo: " + request.getPathInfo() + "</p>");
         out.println("<p>Remote Address: " + request.getRemoteAddr() + "</p>");
         // Generate a random number upon each request
         out.println("<p>A Random Number: <strong>" + Math.random() + "</strong></p>");
         out.println("</body></html>");
      } finally {
         out.close();  // Always close the output writer
      }
   }
}

затем нажмите: http://localhost:8080/myWebApp/sayhello
и получите ошибку 404,какие-нибудь идеи относительно того, что я делаю неправильно?

Ответы [ 5 ]

1 голос
/ 07 ноября 2011

Поместите файл myWebApp.war в папку webapps вместо ROOT, перезапустите Tomcat и попробуйте тот же URL.

1 голос
/ 07 ноября 2011

myWebApp должен находиться рядом с ROOT, а не внутри него.

Развертывание Tomcat 7

0 голосов
/ 03 июля 2013

отредактируйте файл web.xml и добавьте тег ниже:

/скажи привет

0 голосов
/ 07 ноября 2011

ROOT будет иметь демо-приложения tomcat, поместите папку myWebApp в $ tomcat_home / webapps (не внутри ROOT)

перезапустите tomcat и попробуйте тот же URL

0 голосов
/ 07 ноября 2011

Попробуйте поместить свой сервлет в пакет и зарегистрируйте его в web.xml соответственно.Я помню, что столкнулся с этой проблемой в более старой версии tomcat пару лет назад.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...