使用特定 servlet 在页面加载时加载动态 .jsp 页面

Load dynamic .jsp page on pageload with specific servlet

我想创建一个 .jsp 页面,该页面将在 pageload 时加载,但该页面的内容是通过调用我的本地数据库动态创建的。

我的问题是。当用户请求 index.jsp 页面时,我如何 "say"。 在显示 index.jsp 页面之前调用 servletX 获取内容,并将此 back 发送到 index.jsp 页面?

我已经将 jsp 和 servlet 映射在一起,如下所示

<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 中映射到一个 servlet。 但是,如果我将 requestDispatcher 设置为 index.jsp 页面,整个站点就会挂起。如果我将它设置到另一个页面,如 result1.jsp,它工作正常。除了它不是显示内容的索引页面。

我该如何对 servlet 说,将输出发送给启动器?

But if i set the requestDispatcher to the index.jsp page, the whole site hangs. If i set it to another page like result1.jsp it works fine.

是的,因为它显然进入了一个无限循环,因为 index.jsp 映射到您转发的 Servlet。

您需要了解一下 ModelViewController 模式。本质上你 从不 允许直接访问 JSP 但通过控制器路由,在你的情况下是一个简单的 Servlet,它将加载视图所需的任何数据,然后分派到视图渲染。

<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>

在您的 servlet 中加载数据,现在转发到 index.jsp。

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