Простая HTML-страница, не обслуживаемая Tomcat (HTTP 404) - PullRequest
0 голосов
/ 08 июня 2019

Я все еще сталкиваюсь с некоторыми проблемами, которые уже обсуждались здесь, однако я все еще не знаю, что я делаю неправильно.

Моя структура приложения:

/usr/share/tomcat/webapps/greeting
        --index.html
        --src
        --META-INF
        --WEB-INF
             --web.xml
             --classes
                   --sk
                      --simo
                          --Greeting.class

Когдапри запросе http://localhost:8080/greeting/ я получаю HTTP 404 ответ.

При запросе http://localhost:8080/greeting/hi я получаю HTTP 405 ответ.Это не проблема, поскольку Servlet обрабатывает только POST запросы.

Мой вопрос: как я могу заставить сервер Tomcat предоставить файл index.html.

ЭтоМой web.xml файл:

<?xml version="1.0" encoding="ISO-8859-1"?>
    <web-app 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"
      version="3.0">

        <display-name>Hello, World Application</display-name>
        <description>
            This is a simple web application with a source code organization
           based on the recommendations of the Application Developer's Guide.
        </description>

        <servlet-mapping>
            <servlet-name>default</servlet-name>
            <url-pattern>/greeting/*</url-pattern>
        </servlet-mapping>

    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
</welcome-file-list>

</web-app>

Некоторая информация на сервере:

[miso@edubox conf]$ /sbin/tomcat version
Server version: Apache Tomcat/7.0.76
Server built:   Mar 12 2019 10:11:36 UTC
Server number:  7.0.76.0
OS Name:        Linux
OS Version:     3.10.0-957.1.3.el7.x86_64
Architecture:   amd64
JVM Version:    1.8.0_212-b04
JVM Vendor:     Oracle Corporation

Ответы [ 2 ]

0 голосов
/ 09 июня 2019

Основной проблемой было ошибочное передислокация. Как только я удалил каталог приложения «приветствие» и восстановил его содержимое, наконец-то появился index.html.

Отображение сервлета теперь следует примеру примера приложения Tomcat 7:

web.xml:

<servlet>
    <servlet-name>Greeting</servlet-name>
    <servlet-class>sk.simo.Greeting</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>Greeting</servlet-name>
    <url-pattern>/hi</url-pattern>
</servlet-mapping>

Я ссылаюсь на это:

<form action="hi" method="POST"> 

Это отлично работает.

0 голосов
/ 08 июня 2019

1) Определение каждого сервлета состоит из двух частей: 1) привязка класса сервлета к логическому имени и 2) сопоставление этого логического имени с URL-адресами. В вашем web.xml вы определили только 2-ую часть. Теперь вы должны добавить туда также имя класса сервлета. Если вы сохраните логическое имя «default», добавьте следующий код:

<servlet>
  <servlet-name>default</servlet-name>
  <servlet-class>sk.simo.Greeting</servlet-class>
</servlet>

2) В качестве альтернативы используйте @WebServlet(value="/greeting"). Но затем удалите свое отображение сервлета из web.xml.

3) Независимо от ответов выше, важно сопоставление папок с корневым контекстом. Если вы не изменили его (я полагаю, что нет, это хорошо), то путь "/ usr / share / tomcat / webapps / приветствие" означает, что все в вашем приложении доступно через URL-адреса, которые иметь контекстный корень "/ приветствие". Это означает, что если вы хотите вызвать сервлет через "/ приветствие / привет", сервлет должен быть отображен в "/ привет", а не в "/ приветствие" и не в "/ приветствие / привет". Поэтому используйте в вашем сервлете следующее: @WebServlet(value="/hi"). Это можно назвать через "... / приветствие / привет".

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