我正在研究一个java MVC项目。目前我有一个login.jsp
,profile.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}<%) %>" />
我希望在我的问题中我很清楚。 请建议我。
答案 0 :(得分:0)
第一条规则:避免使用scriptlet。您没有其他解决方案而不是scriptlet的事实表明存在设计问题。控制器应为视图准备模型。该视图不应直接调用DAO。这是控制器的责任。
现在,将用户存储在会话中或在每个请求(从控制器)加载它都是性能和陈旧数据的问题。
如果用户仅包含不会在整个会话中更改的数据(或者可能会更改,但仅限于此会话,允许在需要时刷新数据),则将其存储在会话中。这是它的目标:存储具有会话范围的数据。
如果可能有某些外部会话或进程正在修改用户的数据,并且您希望确保始终显示最新的数据,则在每次请求时重新加载它。