Ошибка сервлета Статус HTTP 404 - Не найдено Java Tomcat - PullRequest
0 голосов
/ 10 мая 2018

Я знаю, что уже были подобные проблемы, но ни одно из решений не помогло мне. Я проверил каталоги и пару раз редактировал файл `web.xml, но он все равно не работает.

Я пишу простой сервлет на Java, работающий на Tomcat, и получаю сообщение об ошибке:

HTTP-статус 404 - не найден

Тип отчета о состоянии

Сообщение / WorkshopForm / MainWorkshopForm

Описание Исходный сервер не нашел текущего представления для целевого ресурса или не желает раскрывать, что он существует.

Мой класс сервлетов:

package workshop;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.Servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet(description = "This registration form", urlPatterns = { 
"/WorkshopForm" })


public class WorkshopForm {
public class MyServlet extends HttpServlet implements Servlet {
    private static final long serialVersionUID = 13425L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    String participantName = request.getParameter("participantName");
    String participantSurname = request.getParameter("participantSurname");
    String participantEmail = request.getParameter("participantEmail");

    PrintWriter writer = response.getWriter();
    writer.println("Welcome" + participantName + " " + participantSurname + " " + participantEmail); 
    }       
}

}

Мой web.xml:

screenshot web file

Дерево в Затмении:

screenshot directories

Это проблема с файлом web.xml? Я думаю, что, возможно, у меня есть какое-то несоответствие с именами или путями, но я уже пытался решить эту проблему и не знаю, почему это не работает.

1 Ответ

0 голосов
/ 10 мая 2018

Шаблон URL /WorkshopForm соответствует только точному пути URL /WorkshopForm.Если вы хотите, чтобы сервлет также обрабатывал более длинные пути, например /WorkshopForm/MainWorkshopForm, вам нужно изменить шаблон URL на /WorkshopForm/*.Затем вы можете вызвать request.getPathInfo() в своем коде сервлета, чтобы получить переменную часть пути.

Другой альтернативой является использование некоторой инфраструктуры JAX-RS для обработки отображения путей URL-адресов в методы Java, которые обрабатывают отдельные пути.

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