servlet四大域对象servlet四大域对象seservlet四大域对象servlet四大域对象rvlet四大域对象
pageContext
request
request是表示一个请求,只要发出一个请求就会创建一个request,它的作用域仅在当前请求中有效
用处:常用于服务器间同一请求不同夜间之间的参数传递,常用于表单的空间值传递
方法:request.setAttribute();request.geetAttribute();
request.removeAttribute();request.getParameter();
session
服务器会为每一个会话创建一个Session对象,所以Session中的数据可供当前会话中所有servlet共享。
用处:常用于web开发中的登录验证界面()当用户登录成功后浏览器分配其中一个Session键值对,
方法:session.setAttribute(); session.getAttribute();
session.removeAttributte();
获取Session对象
HttpSession session =request.getSeession();
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页面资源的封装,并可设置页面范围属性 |