2015-02-25 3 views
0

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

Мой вопрос есть. Когда пользователь запрашивает страницу index.jsp, как я могу сказать. Перед тем, как отобразить страницу serv.comX для вызова index.jsp, отправьте это назад на страницу 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 (запрос, ответ);

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

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

+1

Вместо того, чтобы идти от JSP -> сервлет, я бы карту сервлет на пути этого Jsp, а также использовать сервлет, чтобы включить свой JSP. – zack6849

+0

Есть ли у вас пример того, как это сделать и результат? –

+0

Попробуйте что-то вроде этого https://zack6849.com/uploads/N2VmYjA3Y2Y0.png и этот https://zack6849.com/uploads/ZTZjMzlhNGU0.png – zack6849

ответ

2

Но если я установил 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/

+0

Так что /loadBooks.do - сервлет? Почему у этого есть [точка]? –

+0

Вы можете сделать все, что захотите, но почему .do? Смотрите: http://stackoverflow.com/questions/3597582/why-do-java-webapps-use-do-extension-where-did-it-come- from –

+0

Im no JSP pro и я до сих пор не понял. Что представляет loadBooks.do. Это сервлет, который передает объекты запроса и ответа другому сервлету, который затем создает эту страницу? Это фантастическое значение, которое не существует как физический файл? Что-то другое? –