JavaEE 8, Tomcat 8.5, статус ошибки 404 - PullRequest
0 голосов
/ 21 мая 2018

Я пытаюсь сделать свой первый сервлет, но я получаю код состояния 404.

web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
     version="4.0">

    <servlet>
        <servlet-name>Hello</servlet-name>
        <servlet-class>Test.Hello</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Hello</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>

</web-app>

Hello.java

 package Test;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;


public class Hello extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException{
        PrintWriter pw = res.getWriter();
        pw.println("Hello World");
    }
}

Я хочу запустить его: localhost: 8080 / hello

А теперь его статус 404

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

Как я могу это исправить?

1 Ответ

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

Очень странно, я заметил, что ваш web.xml находится в версии 4.0. Вы должны иметь возможность использовать отображение URL с вашим сервлетом через аннотации.

Попробуйте добавить аннотацию WebServlet @WebServlet("/hello"), например:

 package Test;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet; //IMPORT THIS ALSO
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet("/hello") //try adding this here
public class Hello extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException{
        PrintWriter pw = res.getWriter();
        pw.println("Hello World");
    }
}

, а затем удалите все сопоставления, имеющиеся у вас в файле web.xml, которые не нужны, если вы используете аннотации.

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
     version="4.0">

//remove servlet and mapping    

</web-app>

Если это не сработает, вы можете попробовать изменить свою версию.Например, замените ваш web.xml следующим (версия 3.1):

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">

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