如何在JSP MVC应用程序中持久显示数据库中的信息?

时间:2012-04-08 23:21:55

标签: java model-view-controller jsp

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

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

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

我试过的一些方法不起作用:

1)加载homepage并从HomeCommand调用ListUsers次来电UserDao,然后将其存储到会话中。 如果用户从其他网址进入网站,则ListUsers将不会存储到会话中。

2)创建单独的CommandMembersCommandWhosOnlineCommandRecentCommentsCommand。然后使用JSTL include添加FrontController并让其调用Command包括想要.jsp

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

3)使用Java代码为每个小部件(.jsp'smembers.jsp)创建单独的whosonline.jsp以访问Dao。然后使用JSTL include但是我如何才能通过FrontController并且jsp中的Java不是一个大禁忌?

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

我没有想法?

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)