什么是JSP内置对象
JSP引擎在调用JSP对应的jspServlet时,会传递或创建9个与web开发相关的对象供jspServlet使用。JSP技术的设计者为便于开发人员在编写JSP页面时获得这些web对象的引用,特意定义了9个相应的变量,开发人员在JSP页面中通过这些变量就可以快速获得这9大对象的引用
细心的朋友会发现,我们没有在JSP页面上定义过out对象,却可以直接使用!其实out对象就是JSP内置对象之一。
九个内置对象:
- pageContext
- page
- config
- request
- response
- session
- application
- exception
- out
out对象
out对象的API
- int getBufferSize()【得到缓存大小】
- int getRemaining()【得到未使用缓存的大小】
- boolean isAutoFlush()
- void println()
- void flush()
- void close()
- void clearBuffer()
- void clear()
- out对象用于向浏览器输出数据,与之对应的是Servlet的PrintWriter对象。然而这个out对象的类型并不是PrintWriter,是JspWriter
- 我们可以简单理解为:JspWriter就是带缓存的PrintWrieter。
- out对象的原理如下:
- 只有向out对象中写入了内容,且满足如下任何一个条件时,out对象才去调用ServletResponse.getWriter方法,并通过该方法返回的PrintWriter对象将out对象的缓冲区中的内容真正写入到Servlet引擎提供的缓冲区中:
- 设置page指令的buffer属性关闭了out对象的缓存功能
- out对象的缓冲区已满
- 整个JSP页面结束
- 一般我们在JSP页面输出都是用表达式(<%=%>),所以out对象用得并不是很多!
request
- 内置对象request其实就是HttpServletRequest,在Servlet讲解的时候已经详细说明了,没什么好说的
response
- 内置对象response其实就是HttpServletResponse,在Servlet讲解的时候已经详细说明了,没什么好说的
config
- 内置对象config其实就是ServletConfig,在Servlet讲解的时候已经详细说明了,没什么好说的
session
- 内置对象session其实就是HttpSession。,在Servlet讲解的时候已经详细说明了,没什么好说的
注意:在page指令配置如下信息,session将不可使用
<%@page session="false" %>
application
- 内置对象application其实就是ServletContext对象,在Servlet讲解的时候已经详细说明了,没什么好说的
page
- 内置对象page是HttpJasPage对象,其实page对象代表的就是当前JSP页面,是当前JSP编译后的Servlet类的对象。也就是说:page对象相当于普通java类的this
exception
- 内置对象exception是java.lang.Exception类的对象,exception封装了JSP页面抛出的异常信息。exception经常被用来处理错误页面
- 前面我们已经讲过了怎么设置错误页面了,下面我们就来简单使用一下exception对象吧
- 1.jsp页面
<%@ page contentType="text/html;charset=UTF-8" language="java" errorPage="error.jsp" %> <html> <head> <title></title> </head> <body> <%--模拟空指针异常的错误--%> <% String sss = null; sss.length(); %> </body> </html>
error.jsp页面
<%@ page contentType="text/html;charset=UTF-8" language="java" isErrorPage="true" %> <html> <head> <title>错误页面</title> </head> <body> <% out.println("程序抛出了异常:" + exception); %> </body> </html>
效果: