《Oracle Java EE编程指南》10-05:请求、会话、上下文属性比较

请求、会话、上下文属性比较

在HttpServletRequest、HttpSession、ServletContext中有三个相同的方法,都与属性有关
1)public void setAttribute(String name, Object value):该方法用来将对象作为属性存储到相应范围中。
2)public Object getAttribute(String name):该方法用来从某范围中获取属性。
3)public void removeAttribute(String name):该方法用来从某范围中删除属性。

请求属性
HttpServletRequest提供了上面提到的三个方法,可以将对象作为属性存储到请求中,可以通过名字获取请求对象中的属性,也可以通过名字删除相应的属性。请求对象的生命周期较短,每个线程访问Web组件,都会创建一个新的请求,只有请求转发时才将请求转发到下一资源。所以请求属性不会长期驻留在容器内存中,也不会带来并发访问的问题,能够使用请求属性完成相关功能时,尽量使用请求属性。

会话属性
HttpSession接口中定义了上面提到的三个方法,可以将对象作为属性存储到会话中,可以通过名字获取会话对象中的属性,也可以通过名字删除相应的属性。会话对象在一次会话过程中是一个唯一的对象,生命周期比请求要长。建议在Web应用中,只有当某些对象必须在会话范围内共享,必须使用会话属性时,才考虑使用会话属性。

上下文属性
ServletContext接口提供了上面提到的三个方法,可以将对象作为属性存储到上下文中,可以通过名字获取上下文对象中的属性,也可以通过名字删除相应的属性。上下文对象随着容器启动而创建,只有容器关闭时方销毁,所以生命周期很长。而且一个应用只有一个唯一的上下文对象,因此,不要轻易使用上下文属性,只有当确定某对象必须在上下文范围内共享时,才考虑使用上下文属性。

猜你喜欢

转载自blog.csdn.net/goldentec/article/details/105337206
今日推荐