我想使用Dao pattern来控制对网络会话的访问。
我的想法是使用一个DAO控制Session中的所有元素,如果有人想要获取他必须编写类似内容的电子邮件:
sessionDAO.getEmail();
或
UserData userData = sessionDAO.getUserData();
userData.getEmail();
要把电子邮件放在Sesion我想做的事情:
public void setEmail(String email){
ServletRequestAttributes requestAttributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
HttpSession session = requestAttributes.getRequest().getSession();
session.setAttribute(SessionDAO.EMAIL,email);
}
通过这种方式,我可以随时查看会话中的值。我不希望任何人都能这样做:
request.setAttribute("email", "example@gmail.com");
因为在我的代码的其他部分,有人可以重新编写代码,因为他不知道该电子邮件已经在会话中。
在这里使用DAO模式好吗?
答案 0 :(得分:1)
我宁愿将此方法称为context
而不是DAO
(执行上下文,运行时上下文, HTTP上下文 - 你说出来了。)
JNDI使用类似的方法实现。 Spring有ApplicationContext
。可能还有更多这样的例子。
DAO致力于将POJO与其检索分开,并且可能会混淆将来读取您的代码的人,包括您自己。
但无论如何,一般的想法并不坏,我用得很重。