JSP in/WEB-INF возвращает "HTTP Status 404 Запрошенный ресурс недоступен"

Я создал JSP файл.

sample.jsp

<%@ page pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
  <head>
    <title>Insert title here</title>
  </head>
  <body>
    This is jsp program
  </body>
</html>

Я разместил его здесь в проекте samplejsp.

samplejsp
 `-- WebContent
      `-- WEB-INF
           `-- sample.jsp

Я открыл его по следующему URL-адресу.

http://localhost:8080/samplejsp/sample.jsp

Но в браузере отображается следующая ошибка.

404 ОШИБКА

Запрошенный ресурс (/sample.jsp) недоступен.

Ответы

Ответ 1

404 просто означает "Not Found" .

Либо URL-адрес неверен (обратите внимание: чувствителен к регистру!), или ресурс не существует там, где вы думаете.

Просто проверьте URL-адрес и/или проверьте, есть ли ресурс там, где вы ожидаете. Вы поместили sample.jsp в папку /WEB-INF. Таким образом, он недоступен для общественности без вызова сервлета переднего контроллера.

Поместите его вне /WEB-INF.

samplejsp
 `-- WebContent
      |-- WEB-INF
      `-- sample.jsp

Если вы хотите сохранить его в /WEB-INF, вам нужно создать сервлет суперконтроллера, который пересылает его в метод doGet(), как показано ниже.

request.getRequestDispatcher("/WEB-INF/sample.jsp").forward(request, response);

Наконец, "откройте" JSP, просто указав фактический URL сервлета вместо фиктивного URL JSP.

См. также:

Ответ 2

В основном это связано с вашей структурой каталогов или упаковкой.
Можете ли вы добавить свою структуру каталогов?

Как и ниже -

src 
|-html\
|-jsp\

Возможно, это должно сделать это

<form action="sample.jsp" method=get>
      <input type =submit value="submit">
</form>

Изменить. WEB-INF не разрешает прямой доступ к JSP.

Ответ 3

В моем весеннем загрузочном веб-приложении с JSP оно не работало, пока я не добавил эту зависимость

    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
        <scope>provided</scope>
    </dependency>

даже после настройки распознавателя вида

spring.mvc.view.prefix: /WEB-INF/views/ 
spring.mvc.view.suffix: .jsp

Если вы поймете, почему это сработало, пожалуйста, прокомментируйте.