Javaweb 学习记录—JSP内置对象
1.内置对象简介
JSP内置对象也称隐含对象,是指在JSP页面中,不用声明就可以在脚本和表达式中直接使用的对象。
JSP内置对象也称隐含对象,它提供了Web开发常用的功能,为了提高开发效率,JSP 规范预定义了内置对象。
JSP内置对象有如下特点:
- 内置对象由 Web 容器自动载入,不需要实例化;
- 内置对象通过 Web容器来实现和管理;
- 在所有的 JSP 页面中,直接调用内置对象都是合法的。
JSP 规范定义了9种内置对象
对象名称 | 类型 | 功能说明 |
---|---|---|
request | javax.servlet.http.HttpServletRequest | 请求对象,提供客户端HTTP请求数据的访问 |
response | javax.servlet.http.HttpServletResponse | 响应对象,用来向客户端输出响应 |
out | javax.servlet.jsp.JspWriter | 输出对象,提供对输出流的访问 |
session | javax.servlet.http.HttpSession | 会话对象,用来保存服务器与每个客户端会话过程中的信息 |
application | javax.servlet.ServletContext | 应用程序对象,用来保存整个应用环境的信息 |
pageContext | javax.servlet.jsp.PageContext | 页面上下文对象,用于存储当前JSP页面的相关信息 |
config | javax.servlet.ServletConfig | 页面配置对象,JSP页面的配置信息对象 |
page | javax.servlet.jsp.HttpJspPage | 当前JSP页面对象,即this |
exception | java.lang.Throwable | 异常对象,用于处理JSP页面中的错误 |
2.与 Input/Output 有关的内置对象
与 Input/Output (输入/ / 输出)有关的隐含对象包括: request 对象、response 对象和 out 对象,这类对象主要用来作为客户端和服务器间通信的桥梁。
- request 对象表示客户端对服务器端发送的请求;
- response 对象表示服务器对客户端的响应;
- out 对象负责把处理结果输出到客户端。
(1)request
- request 对象即请求对象,表示客户端对服务器发送的请求 , 主要用于接受客户端通过 HTTP 协议传送给服务器端的数据;
- request 对象的类型为 javax.servlet.http.HttpServletRequest ,与Servlet 中的请求对象为同一对象;
- request 对象的作用域为一次 request请求。
- request 对象拥有 HttpServletRequest 接口的所有方法,其常用方法如下:
• void setCharacterEncoding(String charset) :设置请求体参数的解码字符集;
• String getParameter(String name) :根据参数名获取单一参数值;
• String[] getParameterValues(String name) :根据参数名获取一组参数值;
• void setAttribute(String name,Object value) :以名/ / 值的方式存储请求域属性;
• Object getAttribute(String name):根据属性名获取存储的对象数据。
(2)response
- response 对象即响应对象,表示服务器对客户端的响应。主要用来将JSP 处理后的结果传回到客户端。 response 对象类型为javax.servlet.http.HttpServletResponse ,与 Servlet 中的响应对象为同一对象。
- response 对象拥有 HttpServletResponse 接口的所有方法,其常用的方法如下:
• void setContentType(String name):设置响应内容的类型和字符编码;
• void sendRedirect(String url) :重定向到指定的 URL 资源。
(3)out
- out对象即输出对象,用来控制管理输出的缓冲区( buffer )和输出流( output stream)向客户端页面输出数据。
- out对象类型为javax.servlet.jsp.JspWriter,与 HttpServletResponse接口的getWriter() 方法获得的PrintWriter对象功能相同,并都由java.io.Writer类继承而来。
- out 对象的方法可以分为两类:
• 数据的输出;
• 缓冲区的处理。
out内置对象
方法 | 描述 |
---|---|
print/println(基本数据类型) | 输出一个基本数据类型的值 |
print/println(Object obj) | 输出一个对象的引用地址 |
print/println(String str) | 输出一个字符串的值 |
newLine() | 输出一个换行符 |
示例:
<%
int i=0;
java.util.Date date=new java.util.Date();
out.print(i);
out.newLine();
out.println(date);
%>
out对象缓冲区的方法及描述
方法 | 方法描述 |
---|---|
void clear() | 清除输出缓冲区的内容。若缓冲区为空,则产生IOException异常 |
void clearBuffer() | 清除输出缓冲区的内容。若缓冲区为空,不会产生IOException异常 |
void flush() | 直接将目前暂存于缓冲区的数据刷新输出 |
void close() | 关闭输出流。流一旦被关闭,则不能再使用out对象做任何操作。 |
int getBufferSize() | 获取目前缓冲区的大小(KB) |
int getRemaining() | 获取目前使用后还剩下的缓冲区大小(KB) |
boolean isAutoFlush() | 返回true表示缓冲区满时会自动刷新输出;false表示缓冲区满时不会自动清除并产生异常处理 |
- 向out对象的输出流中写入数据时,数据会先被存储在缓冲区中,在JSP默认配置下,缓冲区满时会被自动刷新输出。
- JSP页面通过page指令的autoFlush属性和buffer属性配置缓冲区参数:
• autoFlush属性表示是否自动刷新,默认值为true;
• buffer属性表示缓冲区大小,默认值为8kb。 在此配置下,out 对象在输出缓冲区内容每达到8kb后,会自动刷新输出而不会产生异常处理。
演示:在取消自动刷新功能时,页面输出信息超过缓冲区指定大小的情况和使用out.flush()刷新方法后的情况。
创建outExample.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" autoFlush="false" buffer="2kb"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
for (int i = 0; i < 10000; i++) {
out.println("**************");
//out.flush();
}
%>
</body>
</html>
运行