Скрыть страницу JSP от прямого доступа, но как получить доступ к целевой странице?

URL-адрес ниже, первый содержание в выбранном ответе описывает скрытие JSP.

Скрытые возможности JSP / Servlet

Пока я понимаю, что могу помещать файлы jsp в каталог / WEB-INF. Таким образом, это предотвращает прямой доступ пользователя, например http://test.com/WEB-INF/register.jsp (return 404)

Я думал, что понимаю, но не понимаю и хочу описать лучше, поэтому Я открываю вопрос здесь.

У меня есть, скажем, 2 файла jsp, как показано ниже.

webapps / ROOT / home.jsp

webapps / ROOT / WEB-INF / register.jsp

ПРИМЕЧАНИЕ: / go_register сопоставляется с классом сервлета Register в web.xml (DD)

home.jsp



  Go to register.jsp


register.jsp



  

Итак ... с регистра .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?

5
задан Community 23 May 2017 в 12:13
поделиться