主要掌握九个隐式对象:
request response out session application pageContext page config exception 隐式对象就是不需要我们new的对象,直接的我们就可以在页面使用的对象,注意是在<%...%>里面或者是<%=...%>里面,
request对象:保存了很多客户端请求的信息。如请求来源,Cookie和客户端请求的相关数据等
request对象的方法:
返回值 | 方法 | 描叙 |
object | getAttribute(String name) | 返回指定属性的属性值 |
Enumeration | getAttributeNames() | 返回所有可用属性名的枚举 |
String | getCharacterEncoding() | 返回字符编码方式 |
int | getContentLength() | 返回请求体的长度(以字节数) |
String | getContentType() | 得到请求体的MIME类型 |
ServletInputStream | getInputStream() | 得到请求体中一行的二进制流 |
String | getParameter(String name) | 返回name指定参数的参数值 |
Enumeration | getParameterNames() | 返回可用参数名的枚举 |
String[] | getParameterValues(String name) | 返回包含参数name的所有值的数组 |
String | getProtocol() | 返回请求用的协议类型及版本号 |
String | getScheme() | 返回请求用的协议名,如:http.https及ftp |
String | getServerName() | 返回接受请求的服务器主机名 |
int | getServerPort() | 返回服务器接受此请求所用的端口号 |
BufferedReader | getReader() | 返回解码过了的请求体 |
String | getRemoteAddr() | 返回发送此请求的客户端IP地址 |
String | getRemoteHost() | 返回发送此请求的客户端主机名 |
void | setAttribute(String key,Object obj) | 设置属性的属性值 |
String | getRealPath(String path) | 返回一虚拟路径的真实路径 |
response对象:生成服务器端响应,然后将响应结果发送到客户端
response.getContentType() 得到响应信息的头信息。
response.sendRedirect(String URL)重新定向页面
out对象:表示输出流,此输出流将作为请求发送到客户端
1.public abstract void clear()
清除缓冲区中的内容,不将数据发送至客户端。
2.public abstract void clearBuffer()
将数据发送至客户端后,清除缓冲区中的内容。
3.public abstarct void close()
关闭输出流。
4.public abstract void flush()
输出缓冲区中的数据。
5.public int getBufferSize()
获取缓冲区的大小。缓冲区的大小可用<%@ page buffer="size" %>设置。
6.public abstract int getRemainning()
获取缓冲区剩余空间的大小
7.public boolean isAutoFlush()
获取用<%@ page is AutoFlush="true/false"%>设置的AutoFlush值。
8.public abstract void newLine()
输出一个换行字符,换一行。
9.public abstract void print()
显示各种数据类型的内容。
10.public abstract void println()
分行显示各种数据类型的内容。
以下的对象是作用域通信对象,主要作用就是来存放对象的。
session对象:将我们写个对象放在这个session对象中,我们写个这个对象就在我们的会话中都存在
使用getAttribute("","")方法来把我们的对象放在session中比如:
Object obj;
session.getAttribute("name",obj); 、、这个地方的name是可以自己写的
我们要取出来的话就写
session.getAttribute("name");然后在强制转换一下,就取出来了
application对象:将我们写个对象放在这个application对象中,我们写个对象就在整个应用程序中都存在
放和取的方法是和session对象一样的
pageContext对象:将我们写个对象放在这个pageContext对象中我们这个页面中存在
放和取的方法是和session对象一样的
******************************************
pageContext对象相当于当前页面的容器,可以访问当前页面的所有对象。
pageContext对象的常用方法:
HttpSession getSession() 取得当前页面的session对象。
ServletRequest getRequest() 取得当前页面的request对象。
ServletResponse getResponse( ) 取得当前页面的response对象。
ServletContext getServletContext() 取得当前页面的application对象。
ServletConfig getServletConfig() 取得当前页面的config对象。
Object getPage() 取得当前页面的page对象。
JspWriter getOut() 取得当前页面的out对象。
Exception getException() 取得当前页面的exception对象。
以下这些对象在实际运用中page,config,exception对象用的很少.
paget对象:一般我们使用Page指令来替代使用这个对象
config对象:一样的我们在页面中是使用很少的,一般会在Servlet中使用这个
exception对象:用来处理异常的,
下面为这个exception对象来举个列子;
我有两个页面page1.jsp和page2.jsp
page1.jsp的代码
<%@ page contentType="text/html; charset=GBK" errorPage="page2.jsp" %>
<html>
<head>
<title>
page1
</title>
</head>
<body >
<h1>
<%=(3/0)%>
</body>
</html>
显然这个页面是有异常的就是我用绿色标出的地方,那么我在红色写的地方就是表示只要这个页面有异常就自动跳到page2.jsp中。
现在这个page2.jsp就是刚才page1.jsp出错的时候跳过来的,所以我的page2.jsp一定要指定为错误页面,也就是红色地方,
这样我就可以在页面写上<%=exception.toString() %>,他就显示在page1.jsp上的异常信息了,
page2.jsp的代码
<%@ page contentType="text/html; charset=GBK" isErrorPage="true" %>
<html>
<head>
</head>
<body bgcolor="#ffffff">
<h1>程序发生了错误</h1>
<%=exception.toString() %>
</body>
</html>