作用域 |
作用域对象 |
类名 |
作用范围 |
page |
pageContext |
Javax.servlet.jsp.PageContext |
本jsp |
request |
request |
javax.servlet.http.HttpServletRequest |
一次请求 |
session |
session |
HttpSession |
一次会话 |
application |
application |
ServletContext |
当前web应用 |
注意: 1,之所以他们是作用域,原因是他们都内置了map集合,利用setAtrribute()和getAtrribute()方法能够将key value传送到我们需要的地方 2,page对象和page作用域对象不是同一个东西,别混了!!!page对象代表当前页面servlet对象(this)的引用,并且jsp本质上就是servlet(看jsp被jsp引擎转换完成后的java代码可以得知,具体目录在tomcat/conf/work里面,注意项目部署后才能看到这个文件夹) |
四大作用域对应对象的生命周期 |
|
pageContext |
jsp页面被执行,生命周期开始,jsp页面执行完毕,生命周期结束 |
request |
用户发送一次请求,开始,服务器返回响应,请求结束,生命周期结束 |
session |
用户打开浏览器访问,创建session开始,session超时(默认30分钟)或者被调用invalidate()方法结束 |
application |
当web应用加载的时候创建,web应用移除或服务器关闭,对象销毁(和servlet生命周期,但appliction更长一些,它是web应用被加载时创建,而servlet是第一次被调用时被创建,结束时间一样,所以前者活的稍长) |
总结:当我们在开发中写代码时,用的都是域对象在调用方法书写代码,而域是我们为了便于理解而假想的一种边界(时间维度-生命周期,空间维度-作用范围),所以充分理解了域和域对应的对象的关系,对于掌握servlet编程实在大有裨益!
----从完全0基础开始学习java,到今天两个月,发篇博客表示我还在坚持,同时如有不妥,希望各位大神指正