2012-04-08 62 views
0

对于我的大学项目,我必须构建一个定制的JSP/Servlet MVC应用程序,以便我不能使用Struts或Spring等框架。我已经有FrontController,命令,服务,DAO,业务层。如何在JSP MVC应用程序中持久显示从数据库到视图的信息?

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

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

几个方法我试过不工作:

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

2)创建单独的CommandMembersCommandWhosOnlineCommand,RecentCommentsCommand。然后使用JSTLinclude包含FrontController并使其调用Command包括想要一个.jsp

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

3)创建每个插件(members.jspwhosonline.jsp)与Java代码来访问Dao个人.jsp's。然后使用JSTL include但是我怎样才能让它通过FrontController而不是jsp中的Java是一个很大的禁忌?

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

我出出主意?

回答

0

我不明白的是你想说什么,但可能是一个Servlet设计模式可以提供帮助。通常使用前端控制器访问持久性存储,然后在“会话”或“请求”范围区域中存储需要存储的内容。但是,由于您谈到了“另一个网站”,我认为您可能需要将数据存储在“应用程序”类型区域中。如果您使用servlet作为前端控制器,则可通过getServletContext()。setAttribute()访问此区域,之后您的JSP页面可以像访问会话范围变量一样访问该变量。我无法确定您的前端控制器是servlet还是JSP,但无关紧要,因为它们都可以存储应用程序范围的变量。

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

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

相关问题