Java 如何在JSP MVC应用程序中持久地显示从数据库到视图的信息?

Java 如何在JSP MVC应用程序中持久地显示从数据库到视图的信息?,java,model-view-controller,jsp,Java,Model View Controller,Jsp,对于我的大学项目,我必须构建一个定制的JSP/Servlet MVC应用程序,这样我就不能使用Struts或Spring之类的框架。我已经有了FrontController、命令、服务、DAO和业务层 假设我想创建一个带有侧边栏的网站,侧边栏中有以下小部件:成员、在线用户、最近的评论。每个小部件通过命令->服务->Dao访问数据库 我希望在整个应用程序中,信息始终显示在侧边栏中。问题是我不知道怎么做。我知道如何通过处理GET/POST请求来显示信息,但我不知道如何在没有GET/POST请求的情况

对于我的大学项目,我必须构建一个定制的JSP/Servlet MVC应用程序,这样我就不能使用Struts或Spring之类的框架。我已经有了FrontController、命令、服务、DAO和业务层

假设我想创建一个带有侧边栏的网站,侧边栏中有以下小部件:成员、在线用户、最近的评论。每个小部件通过命令->服务->Dao访问数据库

我希望在整个应用程序中,信息始终显示在侧边栏中。问题是我不知道怎么做。我知道如何通过处理GET/POST请求来显示信息,但我不知道如何在没有GET/POST请求的情况下显示数据库中的信息,如果这样做有意义的话

我试过的几种方法都不管用:

1加载主页并调用home命令后,从UserDao调用ListUsers,然后将它们存储到会话中。但是,如果用户从不同的URL列表进入站点,则不会将用户存储到会话中

2创建单独的命令:MembersCommand、WhosOnlineCommand、RecentCommentsCommand。然后使用JSTL include包含FrontController并使其调用命令。但是include需要一个.jsp

3使用Java代码为每个widget members.jsp、whosonline.jsp创建单独的.jsp,以访问Dao。然后使用jstlinclude。但是我如何让它通过FrontController,而jsp中的Java不是一个大禁忌吗

4使用但这给了我一个空白页


我没有主意了?

我不明白您想说的所有内容,但是servlet设计模式可能会有所帮助。通常使用前端控制器,您可以访问持久性存储,然后将需要存储的内容存储在会话或请求范围的区域中。但是,由于您谈到了另一个网站,我认为您可能需要将数据存储在应用程序类型区域中。如果您使用servlet作为前端控制器,则此区域由getServletContext.setAttribute访问,稍后您的JSP页面可以像访问会话范围变量一样访问变量。我不知道您的前端控制器是servlet还是JSP,但这并不重要,因为两者都可以存储应用程序范围的变量

在真实的业务环境中,这是不够的,因为servlet通常在多台机器之间共享,并且可以多次重新启动和停止;因此,任何持久性信息都必须直接从数据库中检索。然而,对于一个项目来说,将数据存储在应用程序范围的变量中就足够了


我知道我漏掉了你刚才解释的大部分内容,但我想说的是一个前端控制器访问几个持久性存储,将返回的jsp页面所需的所有数据加载到会话、请求或应用程序变量中。在这种情况下,可以编写jsp文件以使用存储在这些变量中的所有数据

查看本教程,了解java web应用程序的MVC体系结构。希望你能得到一些 洞察

<jsp:include page="FrontController/members" /> 
Fragment "FrontController/members" was not found at expected path /MyApplication/WebContent/WEB-INF/FrontController/memmbers