JSP运行原理
每个JSP页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理,JSP引擎先把JSP翻译成一个_jspServlet(实质上也是一个Servlet),然后按照Servlet的调用方式进行调用
由于JSP第一次访问时会翻译成servlet,所以第一次访问通常会比较慢,但第二次访问,JSP引擎如果发现JSP没有变化,就不再翻译,而是直接调用,所以程序的执行效率不会受到影响。
JSP引擎在调用JSP对应的_jspServlet时,会传递或创建9个与web开发相关的对象供_jspServlet使用。JSP技术的设计者为便于开发人员在编写JSP页面时获得这些web对象的引用,特意定义了9个相应的变量,开发人员在JSP页面中通过这些变量就可以快速获得这9大对象的引用。
九大内置对象
No | 内置对象 | 类型 |
---|---|---|
1 | pageContext | javax.servlet.jsp.PageContext |
2 | request | javax.servlet.http.HttpServletRequest |
3 | response | javax.servlet.http.HttpServletResponse |
4 | session | javax.servlet.http.httpSession |
5 | application | javax.servlet.ServletContext |
6 | config | javax.servlet.ServletConfig |
7 | out | javax.servlet.jsp.JspWriter |
8 | page | java.lang.Object |
9 | exception | java.lang.Throwable |
JSP有九个内置对象,不需要预先声明就可以使用
分为四类:
- 输入输出对象: out对象,response对象,request对象
- 通信控制对象: pageContext对象,session对象,application对象
- Servlet对象:page对象,config对象
- 错误处理对象:exception对象
九种对象简介:
1.out对象:javax.servlet.jsp.JSPWriter
用于向客户端、浏览器输出数据
用于在web浏览器内输出信息,并且管理服务器上的缓冲区
2.request对象:javax.servlet.HttpServletRequest
封装来自客户端、浏览器的各种信息
代表了客户端的请求信息,主要用于接受通过Http协议传送到服务器的数据
作用域:一次请求
3.response对象:javax.servlet.HttpServletResponse
封装服务器的响应信息
代表对客户端的响应,主要是把JSP容器处理过的对象传回客户端
作用域:只在JSP页面内有效
4.exception对象:封装了JSP程序执行过程中发生的异常和错误信息
5.config对象:ServletConfig
封装了程序的配置信息
主要作用的取得服务器的配置信息
6.page对象:
指向当前JSP程序本身
page 对象代表JSP本身,只有在JSP页面内才是合法的。 page隐含对象本质上包含当前 Servlet接口引用的变量,类似于Java编程中的 this 指针
7.session对象:HttpSession
用来保存会话信息
从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开服务器结束,称为一个会话
首次访问服务器上一个JSP页面时产生string类型的id,存放在Cookie中,直到浏览器关闭,服务器端这个对象才取消。
session对象使用map来保存数据
8.application对象:ServletContext
代表当前应用程序的上下文
application可以把数据保存在服务器直到服务器关闭
所有客户共享这个application对象
9.pageContext对象:PageContext
提供了对jsp页面所有对象以及命名空间的访问
作用是取得任何范围的参数,通过它可以获取以上对象,创建和初始化均由容器完成,可以直接使用
,