0

我想使用Dao 模式来控制对 Web Session 的访问。

我的想法是使用一个 DAO 控制 Session 中的所有元素,如果有人想获得例如他必须写这样的电子邮件的电子邮件:

    sessionDAO.getEmail();

或者

    UserData userData = sessionDAO.getUserData();
    userData.getEmail();

为了将电子邮件放入会话中,我想做:

    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");

因为例如在我的代码的其他部分,有人可以重复代码,因为他不知道电子邮件已经在 Session 中。

这里很好地使用了 DAO 模式吗?

4

1 回答 1

1

我宁愿称这种方法为 acontext而不是DAO执行上下文运行时上下文HTTP 上下文——你可以命名它)。

JNDI 是使用类似的方法实现的。春天有ApplicationContext。这样的例子可能还有很多。

DAO 更专注于将 POJO 与其检索分离,并且可能会混淆将来阅读您的代码的任何人,包括您自己。

但不管怎样,总体思路还不错,我用的挺多的。

于 2012-07-23T20:52:56.277 回答