Статус HTTP 404. Почему сервер не может найти мой сервлет, на который я сопоставил?

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

Я сделал очень простое приложение, используя сервлеты. Он имеет форму, в которой пользователь выбирает цвет пива. Это должно привести его к сервлету, который я сопоставил с помощью XML. Сервлет должен просто отправить ответ и распечатать выбранный пользователем цвет.

К сожалению, у меня где-то ошибка, и я не могу понять, где. Может ли кто-нибудь помочь мне, так как я действительно застрял?

Вот мои три файла:

форма.html:

<!DOCTYPE html>
<html>
<body>

    <form action = "SelectBeer.do" method = "POST">

        Color:
        <select name = "color">
            <option>light</option>
            <option>amber</option>
            <option>brown</option>
            <option>dark</option>
        </select>
        
        <button>Submit</button>

    </form>

</body>
</html>

Сервлет BeerSelect.java:

package com.example.web;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class BeerSelect extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        resp.setContentType("text/html");
        PrintWriter out = resp.getWriter();
        String color = req.getParameter("color");
        out.println("Selected: " + color);

    }
}

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

<?xml version = "1.0" encoding = "UTF-8"?>
<web-app xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns = "http://java.sun.com/xml/ns/javaee" xsi:schemaLocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id = "WebApp_ID" version = "3.0">
  <display-name>MyBeerApp</display-name>
  <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>
  
  <servlet>
  <servlet-name>myServlet</servlet-name>
  <servlet-class>com.example.web.BeerSelect</servlet-class>
  </servlet>
  
  <servlet-mapping>
  <servlet-name>myServlet</servlet-name>
  <url-pattern>/SelectBeer.do</url-pattern>
  </servlet-mapping>
  
</web-app>

Наконец, я предоставлю вам ss из структуры моего проекта. Еще раз, заранее спасибо всем, кто попытается помочь. Это бы много значило для меня!

P.S. Форма работает нормально, но когда я ее отправляю, я получаю ошибку 404.

Вы пытались открыть инструменты разработчика браузера, чтобы проверить, какой URL-адрес при нажатии на кнопку отправки? Это может помочь проверить, обращается ли он к правильному URL-адресу или нет.

MK Tan 11.12.2020 04:55

Это http://localhost:8080/MyBeerApp/SelectBeer.do. А в XML я использую url-шаблон /SelectBeer.do, что должно быть хорошо, верно?

Stefan 11.12.2020 04:57

попробуй пересобрать проект

Gunesh Shanbhag 11.12.2020 05:48
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
3
205
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

Я не могу в это поверить. Как это может работать на вас, а не на меня? Я устал это несколько раз, до сих пор не повезло. Я получаю ошибку 404 каждый раз. У вас такая же структура проекта?

Stefan 11.12.2020 05:37

Да. Это же ваш проект. Можете ли вы отправить свой проект для меня?

Mark 11.12.2020 05:46

Я просто написал все заново. Я заметил одно отличие. Мне нужно было поместить HTML в WebContent и XML в WEB-INF. Вот и прошли мои 4 часа...

Stefan 11.12.2020 06:07

Не могли бы вы сделать мне одолжение и еще раз проверить структуру вашего проекта? Тот, который я разместил на картинке вопроса, неверен, верно? Я имею в виду, что это не может сработать, если вы сделаете это, как я раньше?

Stefan 11.12.2020 06:08

Еще раз спасибо, вы можете удалить этот ответ сейчас :) Я принял ваш второй

Stefan 11.12.2020 06:33
Ответ принят как подходящий

@Stefan Это структура моего проекта. Я нашел, что это немного отличается от вас.

Другие вопросы по теме