《》JSP中的application、session、request和pageContext

JSP中的application、session、request和pageContext 这四个内置对象分别用于操作application、session、request和page范围中的数据。

application、session、request、page的使用方法基本上都是一致的,只不过作用范围不一样而已:

  • application:全局作用范围,整个应用程序共享,就是在部署文件中的同一个webApp共享,生命周期为:应用程序启动到停止。
  • session:会话作用域,当用户首次访问时,产生一个新的会话,以后服务器就可以记住这个会话状态。生命周期:会话超时,或者服务器端强制使会话失效。
  • request:请求作用域,就是客户端的一次请求。
  • page:一个JSP页面。

服务器启动后就产生了这个application对象,当客户再所访问的网站的各个页面之间浏览时,这个application对象都是同一个,直到服务 器关闭。但是与session不同的是,所有客户的application对象都是同一个,即所有客户共享这个内置的application对象。

application对象代表web应用本身,因此使用application来操作web应用相关数据。

application对象通常有两个作用: 1、在整个Web应用的多个JSP、Servlet之间共享数据。 2、访问Web应用的配置参数。

session长驻在服务器内存里,session有id标识,一个session专供一个用户使用。

request只能存在于一次访问里,为了让每次访问区分开是哪个用户,所以request中会带上session的id标识,就是每个request都会属于一个session,一个session能为很多次request服务。

类似于数据库的多对一关系 所以 request.getSession 的本质是使用request中的session id去找到这个用户对应的session。

1.request:

request对象内数据的存活范围就是在request对象的存活范围内,当客户端向服务器端发送一个请求,服务器向客户端返回一个响应后,该请求对象就被销毁了;之后再向服务器端发送新的请求时,服务器会创建新的request对象,该request对象与之前的request对象没有任何关系,因此也无法获得在之前的request对象中所存在的任何数据。

2.session :

session对象内数据的存活范围也就是session对象的存活范围(现在可以这样简单理解:只要不关闭浏览器,session对象就会一直存在(严谨的说这样的说法是错误的!)),因此在同一个浏览器窗口中,无论向服务器端发送多少请求,session对象只有一个。

3.application:

application(应用对象):存活的范围最大的对象,只要服务器没有关闭,application对象中的数据就会一直存在。在整个服务器运行过程当中,application对象只有一个。

java中request/session/application三大域对象的作用范围
//只要服务器不关闭,计数器一直有效,即使在不同的浏览器内访问!
//若把application换成session,只能在一个会话中有效,关闭浏览器计数器就不在有效
//若把application换成request,每次刷新浏览器进行请求时,计数器只显示1

--------------------------------------------------------------