Загрузить динамическую страницу .jsp при загрузке страницы с помощью определенного сервлета

Я хотел бы создать страницу .jsp, которая будет загружаться при загрузке страницы, но содержимое страницы создается динамически путем вызова моей локальной базы данных.

У меня такой вопрос. Когда пользователь запрашивает страницу index.jsp, как мне «сказать». Перед отображением страницы index.jsp вызовите servletX для получения содержимого и отправить его обратно на страницу index.jsp?

У меня есть сопоставление моего jsp и сервлета следующим образом

<servlet>
    <servlet-name>intname</servlet-name>
    <servlet-class>ServletBooks</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>intname</servlet-name>
    <url-pattern>/index.jsp</url-pattern>
</servlet-mapping>

Но не знаете, как мне отправить отправителя обратно в себя? getServletContext (). getRequestDispatcher (???) .forward (запрос, ответ);

Редактировать. Окей, теперь сайт работает следующим образом. Я запрашиваю страницу index.jsp, которая отображается в web.xml на сервлет. Но если я установлю requestDispatcher на страницу index.jsp, весь сайт зависнет. Если я установлю его на другую страницу, например result1.jsp, он будет работать нормально. Кроме того, это страница индекса, отображающая содержимое.

Как мне сказать сервлету отправить вывод инициатору?


person Cristian Matthias Ambæk    schedule 25.02.2015    source источник
comment
Вместо того, чтобы переходить с jsp - ›сервлета, я бы сопоставил сервлет с этим путем jsp и использовал бы сервлет для включения вашего jsp.   -  person Zachary Craig    schedule 25.02.2015
comment
У вас есть пример того, как это сделать и каков результат?   -  person Cristian Matthias Ambæk    schedule 25.02.2015
comment
Попробуйте что-нибудь вроде этого zack6849.com/uploads/N2VmYjA3Y2Y0.png и этого zack6849.com/uploads/ZTZjMzlhNGU0.png   -  person Zachary Craig    schedule 25.02.2015
comment
Я не уверен, что понимаю, вам ВСЕГДА нужно вызвать индексную страницу, прежде чем что-либо еще можно будет вызвать? И как вы в сервлете скажете отправить вывод обратно инициатору вместо вызова новой страницы, такой как страница result.jsp.   -  person Cristian Matthias Ambæk    schedule 25.02.2015


Ответы (1)


Но если я установлю requestDispatcher на страницу index.jsp, весь сайт зависнет. Если я установлю его на другую страницу, например result1.jsp, он будет работать нормально.

Да, потому что он, очевидно, входит в бесконечный цикл, поскольку index.jsp отображается на сервлет, с которого вы выполняете пересылку.

Вам нужно взглянуть на шаблон ModelViewController. По сути, вы никогда не разрешаете прямой доступ к JSP, а маршрутизируете через контроллер, в вашем случае простой сервлет, который загружает любые данные, необходимые для представления, а затем отправляет их в представление для рендеринга.

<servlet>
    <servlet-name>intname</servlet-name>
    <servlet-class>ServletBooks</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>intname</servlet-name>
    <url-pattern>/loadBooks.do</url-pattern>
</servlet-mapping>

<!-- If you are on Tomcat set a Default page if root of webapp requested -->
<welcome-file-list>
    <welcome-file>loadBooks.do</welcome-file>
</welcome-file-list>

Загрузите данные в свой сервлет и перейдите к index.jsp.

http://www.thejavageek.com/2013/08/11/mvc-architecture-with-servlets-and-jsp/

person Alan Hay    schedule 25.02.2015
comment
Итак, /loadBooks.do - это сервлет? Почему у него есть [точка]? - person Cristian Matthias Ambæk; 26.02.2015
comment
Вы можете делать все, что хотите, но почему .do? См .: stackoverflow.com/questions/3597582/ - person Alan Hay; 26.02.2015
comment
Я не профессионал JSP, и я еще не совсем понял. Что представляет собой loadBooks.do. Это сервлет, который передает объекты запроса и ответа другому сервлету, который затем создает эту страницу? Это художественная ценность, не существующая в виде физического файла? Что-то другое? - person Cristian Matthias Ambæk; 26.02.2015
comment
Спасибо за всю информацию, которую я получил, следуя примеру, после того, как понял, что url-шаблон - это просто фиктивное значение, которое действует как связь между двумя вещами. - person Cristian Matthias Ambæk; 01.03.2015