JSP 会被编译为一个Servlet类 ,运行的时候是一个Servlet实例。
四大作用域
1.pageContext 当前页面
通过pageContext.setAttribute(key,value)的数据,只能在当前页面访问,在其他页面就不能访问了。
2.requestContext 一次请求
如果把变量放到request里,就说明它的作用域是request,它的有效范围是当前请求周期。所谓请求周期,就是指从http请求发起,到服务器处理结束,返回响应的整个过程。在这个过 程中可能使用forward的方式跳转了多个jsp页面,在这些页面里你都可以使用这个变量。
3.sessionContext 当前会话
sessionContext 指的是会话,从一个用户打开网站的那一刻起,无论访问了多少网页,链接都属于同一个会话,直到浏览器关闭。 所以页面间传递数据,也是可以通过session传递的。
但是,不同用户对应的session是不一样的,所以session无法在不同的用户之间共享数据。
4.applicationContext 全局,所有用户共享
applicationContext 指的是全局,所有用户共享同一个数据
在JSP中使用application对象, application对象是ServletContext接口的实例
也可以通过 request.getServletContext()来获取。
所以 application == request.getServletContext() 会返回true
application映射的就是web应用本身。
九种隐式对象
JSP一共有9个隐式对象,分别是
request,response,out
pageContext, session,application
page,config,exception
- request 代表请求
- response 代表响应
- out 代表 输出
- pageContext 代表当前页面作用域
- session 代表当会话作用域
- application 代表当全局作用域
- page 对象即表示当前对象; page即代表this
- config可以获取一些在web.xml中初始化的参数。
- exception 对象只有当前页面的<%@page 指令设置为isErrorPage="true"的时候才可以使用。
- 同时,在其他页面也需要设置 <%@page 指令 errorPage="" 来指定一个专门处理异常的页面。