URL-адрес ниже, первый контент в выбранном ответе описывает скрытие JSP.
Скрытые функции JSP / Servlet
Я до сих пор понимаю, что могу поместить файлы jsp в каталог / WEB-INF. Так что это предотвращает прямой доступ пользователя, например http://test.com/WEB-INF/register.jsp
(возврат 404)
Я думал, что понимаю, но нет, и хочу описать лучше, поэтому я раскрываю вопрос здесь.
У меня есть, скажем, 2 jsp файла, как показано ниже.
WebApps / ROOT / home.jsp
WebApps / ROOT / WEB-INF / register.jsp
ПРИМЕЧАНИЕ: /go_register
сопоставлен с классом сервлета Register
в web.xml (DD)
home.jsp
<html>
<body>
<a href="/go_register">Go to register.jsp</a>
<body>
</html>
register.jsp
<html>
<body>
<form method="post" action="/process_register">
<input type="submit">
</form>
<body>
</html>
Итак ... поскольку register.jsp находится в / WEB-INF /, только RequestDispatcher может получить к нему доступ.
Это означает, что мне нужно создать сервлет для пересылки запроса.
public class Register extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String address = "/WEB-INF/register.jsp";
request.getRequestDispatcher(address).forward(request, response);
}
}
Но это выглядит не так. Если я хочу добавить страницу входа /WEB-INF/login.jsp в home.jsp ,
чтобы получить доступ к login.jsp, мне нужно создать еще один сервлет только для того, чтобы перейти на страницу входа в систему ???
public class Login extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String address = "/WEB-INF/login.jsp";
request.getRequestDispatcher(address).forward(request, response);
}
}
Я думаю, что использую технику неправильно. Может кто-нибудь объяснить, как использовать этот JSP сокрытие?