在jsp,servlet中管理bean的设计模式

时间:2012-07-17 21:21:08

标签: jsp design-patterns servlets

我参与了一个jsp / servlet应用程序。应用程序存储会话或请求中所需的对象。但是,可以将相同的对象注入到多个位置的会话或请求中。换句话说,而不是写

HomeBean homeBean = (HomeBean) request.getSession(false).getAttribute("homeBean");

我会写

HomeBean homeBean = BeanStore.getHomeBean();

我是否过度思考或过度设计?

1 个答案:

答案 0 :(得分:1)

在某些框架中,例如,您可以将会话或甚至某些会话属性直接注入您的业务组件,例如:

@Inject
private HomeBean homeBean;

而不是使用HTTP会话访问代码污染您的代码,只需获取对象一次并在需要的地方传递它。它将使阅读和测试更容易。

请注意,如果您确实不想直接传递BeanStore.getHomeBean(),那么HttpSession很难正确编写。 Servlet过滤器和ThreadLocal,我来了!更不用说我发现这种静态的“工厂”非常难看。


旁注,在:

request.getSession(false).getAttribute("homeBean")

request.getSession(false)通常会返回null,让您感到讨厌NullPointerException。在这种情况下,首选true或根本没有参数。