在jsp页面中调用bean的值的正确方法是什么?

时间:2011-12-15 08:54:58

标签: model-view-controller jsp jstl javabeans

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

最好为整个User中占优势的userID对象中的特定session设置session类型对象,并将所有值直接检索为{ {1}}无处不在?

最好只在整个${sessionScope.user.property}中占优势的userID对象中设置session,并使用以下代码行检索所有页面中的值: session <jsp:useBean id="userDAO" scope="page" type="com.project.dao.UserDAO" /> <c:set var="user" value="<%= userDAO.getUser(%>${sessionScope.userID}<%) %>" />

我希望在我的问题中我很清楚。 请建议我。

1 个答案:

答案 0 :(得分:0)

第一条规则:避免使用scriptlet。您没有其他解决方案而不是scriptlet的事实表明存在设计问题。控制器应为视图准备模型。该视图不应直接调用DAO。这是控制器的责任。

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

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

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