使用DAO模式访问Web会话

时间:2012-07-23 20:07:06

标签: java design-patterns session servlets dao

我想使用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模式好吗?

1 个答案:

答案 0 :(得分:1)

我宁愿将此方法称为context而不是DAO执行上下文运行时上下文 HTTP上下文 - 你说出来了。)

JNDI使用类似的方法实现。 Spring有ApplicationContext。可能还有更多这样的例子。

DAO致力于将POJO与其检索分开,并且可能会混淆将来读取您的代码的人,包括您自己。

但无论如何,一般的想法并不坏,我用得很重。