在JSP的Java代码块、表达式块等中可以直接使用的引用,称为JSP的内置对象。常用
的内置对象有九个,分别是:
补充:如何找到你的jsp文件生成的.java和.class文件,在.java文件的_jspService()方法中即可找到以上9个内置对象的定义。
根据如上路径即可找到。
以下简单介绍一些内置对象:
1.pageContext
pageContext,页面上下文,其具有一个只在当前页面范围的域属性空间,即其具有setAttribute()方法与getAttribte(方法。但由于在当前页面范围,数据不存放到域属性空间也可直接使用,将数据存放到域属性空间反而感觉“多此一举”, 所以这些方法并不常用。
不过,在同一页面中,为了使用EL表达式(后面学习)来访问某变量的值,此时一般使pageContext。
pageContext具有一些get方法;可以获取到Request、Response、Session、ServletContext、ServletConfig、page (即当前Servlet)、exception、 out 等另外八个内置对象。
3.session
其定义为:
javax.servlet.http.HttpSession session = null;
初始赋值为:
session = pageContext.getSession();
查看源码,发现其就是调用的request.getSession()
7.out
out,类型为javax.servlet.jspJspWriter。 查看JavaEE文档,发现JspWriter 类继承自I0流的Writer类。即out就是一个输出流对象。
8.page
指的就是当前jsp生成的.java类对象,其定义为:
final java.lang.Object page = this;
9.exception
在普通的JSP页面中是不能使用exception内置对象的。因为打开JSP翻译为的Servlet,发现其中并没有exception对象。若要在页面中直接使用exception对象,则需要配合着page指令使用。
如果在jsp文件中添加一个page指令:
<%@page isErrorPage="true" %>//不写该语句,默认为false
就可以在其.java文件中找到exception的定义,如下:
java.lang.Throwable exception = org.apache.jasper.runtime.JspRuntimeLibrary.getThrowable(request);
if (exception != null) {
response.setStatus(javax.servlet.http.HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
}