-
应用域和请求域的异同
-
同:应用域和请求域都有setAttribute、getAttribute、removeAttribute三个方法
-
异:域的范围不一样,生命周期不一样
(1)在 Request 中存在域属性空间:请求域,用于存放有名称的数据。该数据只在当前 Request 请求中可以进行访问,即请求域的Attribute只在一个request对象中有效。发送n个请求就有n个request对象,如果设置了一个请求的Attribute数据,下一个请求就没有Attribute数据,因此对象范围比应用域小,生命周期短。
-
(2)应用域的Attribute存在于ServletContext对象,而ServletContext又被称为Servlet上下文,是运行环境,其域属性空间是所有ServletConfig对象共享的,对象范围大,生命周期长。
-
请求域和应用域的选用规则:
-
选用生命周期短的、占用资源较小的域对象,
-
数据可以放到应用域的ServletContext,但是由于应用域范围大,占用资源,不建议使用
-
数据应当放到请求域的request中,但是由于应用域范围小,不同Servlet的request数据不共享,因此需要共享数据,即转发
-