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
Если вы поймете, почему это сработало, пожалуйста, прокомментируйте.