0

对于我的大学项目,我必须构建一个自定义 JSP/Servlet MVC 应用程序,因此我不能使用诸如 Struts 或 Spring 之类的框架。我已经有了 FrontController、Command、Service、DAO、业务层。

假设我想创建一个带有侧边栏的网站,并且在侧边栏中有以下小部件:Members, Who's Online, Recent Comments. 每个小部件通过Command-> Service->访问数据库Dao

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

我尝试过的几种方法不起作用:

1)在加载homepage和调用HomeCommand调用ListUsersUserDao,然后将它们存储到会话中。但是如果用户从不同的 URL 进入站点,ListUsers 将不会被存储到会话中。

2) 创建一个单独的Command: MembersCommand, WhosOnlineCommand, RecentCommentsCommand. 然后使用JSTL includeto includeFrontController并让它调用Command. 包括想要一个.jsp

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

.jsp's3) 使用 Java 代码为每个小部件 ( members.jsp, ) 创建个人whosonline.jsp以访问Dao. 然后使用JSTL include. 但是我怎样才能让它通过FrontControllerjsp中的Java不是一个很大的禁忌吗?

4)使用<jsp:forward page="" /> ,但这给了我一个空白页?

我没主意了?

4

2 回答 2

0

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

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

我知道我错过了您所解释的大部分内容,但我的观点是前端控制器访问(几个)持久存储,将返回的 jsp 页面所需的所有数据加载到会话或请求或应用程序变量中(在这种情况下)并且可以编写 jsp 文件以利用已存储在这些变量中的所有数据。

于 2012-04-08T23:46:23.183 回答
0

查看本教程以了解 Java Web 应用程序的 MVC 架构。希望你能有所了解

http://www.javaranch.com/journal/200603/frontman.html

设计模式基于 Web 的应用程序

http://balusc.blogspot.com/2008/07/dao-tutorial-data-layer.html

使用 MVC 和 DAO 模式在 JSP 页面的 HTML 中显示 JDBC ResultSet

于 2012-04-09T10:27:16.487 回答