Доступ к JSP в подпапке в папке WEB-INF? - PullRequest
0 голосов
/ 02 октября 2018

Я только начал работать с JSP и столкнулся с одной проблемой.

Как я понимаю, к страницам JSP в WEB-INF можно обращаться через браузер с URL-адресом в localhost:

localhost:8080/MyProject/MyJSP.jsp

Однако, если я создаю другую подпапку в папке WEB-INF (например, «MyFolder») и пытаюсь получить доступ к той же странице JSP через URL:

localhost:8080/MyProject/MyFolder/MyJSP.jsp

вместо этого выдается ошибка 404.Относятся ли системы навигации по файлам JSP, скажем, к системе навигации по файлам HTML?

РЕДАКТИРОВАТЬ: я использую сервлеты для отображения своей страницы JSP следующим образом:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

response.sendRedirect("MyJSP.jsp");
}

РЕДАКТИРОВАТЬ 2: Я имеюизменил мое перенаправление на requestDispatcher, как мне посоветовали сделать:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/WEB-INF/MyFolder/MyJSP.jsp");
dispatcher.forward(request, response);
}

Если мой @WebServlet равен ("/myjsp"), может ли кто-нибудь по-прежнему получить доступ к моей странице MyJSP.jsp, если они наберут localhost:8080/MyProject/myjsp?

Ответы [ 2 ]

0 голосов
/ 03 октября 2018

'/WEB-INF/' считается защищенной / защищенной папкой, и не рекомендуется делать ее доступной, если это действительно не требуется.Если вы все еще хотите сделать эти файлы доступными, попробуйте добавить приведенное ниже отображение сервлета в ваш файл web.xml.Надеюсь, это поможет

<servlet>
<servlet-name>MyJSP</servlet-name>
<jsp-file>/WEB-INF/MyFolder/*</jsp-file>
</servlet>
<servlet-mapping>
<servlet-name>MyJSP</servlet-name>
<url-pattern>/ViewMyJsp.jsp</url-pattern>
</servlet-mapping>

Вы можете явно указать сопоставление, объявив его с элементом в дескрипторе развертывания.Вместо элемента <servlet-class> вы указываете элемент <jsp-file> с путем к файлу JSP из корня WAR.

0 голосов
/ 02 октября 2018

Как я понимаю, страницы JSP в WEB-INF могут быть доступны через браузер с URL-адресом в localhost

Нет.Это как раз наоборот.Все, что в WEB-INF, не доступно для браузера.

Хорошей практикой является размещение их именно там, потому что вы никогда не хотите, чтобы кто-либо обращался к JSP напрямую из браузера.JSP являются представлениями, и запросы должны сначала проходить через контроллер, который затем отправляет (то есть перенаправляет , а не перенаправляет, см. RequestDispatcher.forward () vs HttpServletResponse.sendRedirect () ) вправый взгляд.

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