servlet四大作用域对象讲解

740 阅读3分钟

1. pageContext

pageContext的作用域为page(页面执行期)

2. request

request是表示一个请求,只要发出一个请求就会创建一个request,它的作用域仅在当前请求中有效

用处:常用于服务器间同一请求不同夜间之间的参数传递,常用于表单的空间值传递

方法:request.setAttribute();request.geetAttribute();

request.removeAttribute();request.getParameter();

3. session

服务器会为每一个会话创建一个Session对象,所以Session中的数据可供当前会话中所有servlet共享。

用处:常用于web开发中的登录验证界面()当用户登录成功后浏览器分配其中一个Session键值对,

方法:session.setAttribute(); session.getAttribute();

session.removeAttributte();

获取Session对象

HttpSession session =request.getSeession();

4.Application

(ServletContext上下文)

作用范围,所有的用户都可以取得此信息,此信息在整个服务器端被保留 Application属性范围值只要设置一次,则所有的网页窗口都可以取得数据,ServletContext在服务器启动时创建,在服务器关闭时销毁 ,一个JavaWeb应用只创建一个servletContext对象

方法:ServletContext application = this.getServletContext();

​ application.setAttribute(); application.getAttribute();

​ application.removeAttriute();

作用域规定的是变量的有效期限

①如果把变量放到pageContext里,就说明它的作用域是page,它的有效范围只在当前JSP页面里。从把变量放到pageContext开始,知道JSP页面跳转都可以使用。

②如果把变量放到request里,就说明它的作用域是request,它的有效范围是当前请求周期。 所谓请求周期:就是从Http请求发起,到服务器处理结束,返回响应的整个过程。在这个过程中可能使用forward的方式跳转了多个JSP页面,在这些页面里,你都可以使用这个变量。

③如果把这个变量放到session里,就说明它的作用域是session,它的有效范围是当前会话。 所谓当前会话:就是指从用户打开浏览器开始,知道用户关闭浏览器这中间的过程,这个过程可能包含多个请求响应。 也就是说,只要用户不关闭浏览器,服务器就有办法知道这些请求是一个人发起的,整个过程被称为一个会话,而放到会话中的变量,就可以在当前会话的所有请求里使用。

④如果把变量放到application里,就说明它的作用域是application,它的有效范围是整个应用。 所谓整个应用:是指从应用启动到应用结束。application里的变量存活时间最长,如果不进行手动删除,它们就一直可以使用。

总结:pageContext(当前jsp有效)

request(一次请求有效,无论这个请求做了多少次转发)

Session(一次会话)只要浏览器不关闭就可以当做请求周期的一次会话

application:整个web应用 只要应用不关闭就存在

隐式对象说明
request转译后对应HttpServletRequest/ServletRequest对象
response转译后对应HttpServletRespons/ServletResponse对象
session转译后对应HttpSession对象
application转译后对应ServletContext对象
out转译后对应JspWriter对象,其内部关联一个PringWriter对象
page转译后对应this
config转译后对应ServletConfig对象
exception转译后对应Throwable对象,代表由其他JSP页面抛出的异常对象,只会出现于JSP错误页面(isErrorPage设置为true的JSP页面)
pageContext转译后对应PageContext对象,它提供了JSP页面资源的封装,并可设置页面范围属性