2011-12-15 57 views
0

我正在开发一个java MVC项目。目前我有一个login.jsp,profile.jsp, ``CheckLogin servlet,User.java bean class和UserDAO dao类(bean和jsp以及所有其他的东西也被添加)。 当我在用户登录成功时,我现在在做的是重定向到显示用户所有细节的个人资料页面。 这里我的问题是:在jsp页面中调用bean的值的正确方法是什么?

是更好地为特定的userID一个User类型的对象在session对象,在整个session盛行,直接检索所有值${sessionScope.user.property}无处不在?

是更好地仅有一个userIDsession对象,在整个session盛行和检索值在使用这些代码行的所有页面: <jsp:useBean id="userDAO" scope="page" type="com.project.dao.UserDAO" /> <c:set var="user" value="<%= userDAO.getUser(%>${sessionScope.userID}<%) %>" /> ${user.property}

我希望我对你的问题很清楚。 请给我建议。

回答

0

第一条规则:避免scriptlet。事实上,你没有其他解决方案比脚本显示设计问题。控制器应该为视图准备模型。该视图不应直接调用DAO。这是控制器的责任。

现在,将用户存储在会话中或将其加载到每个请求(来自控制器)是一个性能和陈旧数据的问题。

如果用户只包含不会在整个会话中更改的数据(或者只能从此会话更改,允许在需要时刷新数据),然后将其存储在会话中。这是它的目标:存储具有会话范围的数据。

如果可能有某个外部会话或进程修改了用户的数据,并且要确保始终显示最新的数据,请在每次请求时重新加载它。

+0

如果我在这种情况下不使用`UserDAO`,那么可以通过其他方式为特定的jsp页面获取`User`对象?请提出设计问题.. – Asif 2011-12-15 14:15:06

相关问题