JSP提供了9个预设的对象,即内置对象,这些对象在JSP网页环境下,因此用到他们时不需引用这些对象的包,便可以在JSP网页中使用这些对象。他们分别是request、response、application、session、out、config、pageContext、page、exception。
JSP内置对象
对象名称 | 衍生类 | 功能简述 |
request | javax.servlet.ServletRequest.HttpServletRequest | 取得客户端与系统的信息 |
response | javax.servlet.ServletRequest.HttpServletRequest | 响应客户端信息 |
application | javax.servlet.ServletContext | 记录与处理上线者共享的数据 |
session | javax.servlet.http.HttpSession | 记录和处理上线者的个别数据 |
out | javax.servlet.jsp.JspWriter | 控制数据输出的操作 |
config | javax.servlet.ServletConfig | 取得JSP编译后的Servlet信息 |
pageContext | javax.servlet.jsp.PageContext | 存取和处理系统运行时的各种信息 |
page | java.lang.Object | 代表目前的这个JSP网页对象 |
exception | java.lang.Throwable | 异常处理机制 |
这些对象之间的关联
▶request与response对象
JSP网页之所以具备与用户交互的功能,关键在于request对象与response对象所提供的功能,request让服务器取得用户在网页表单中所输入的数据内容,response则提供服务器端程序响应客户端信息所需功能。
▶application与session对象
application与session这两个对象基本上用于记录和处理JSP网页之间的共享数据,
由于因特网本身是一种无联机状态的应用程序,当一份网页文件从网站服务器传至客户端的浏览器之后,客户端与服务器之间就没有任何联机状态存在,这个先天缺陷让网页无法存储应用程序运行期间所需的共享数据,application与session就是用来解决这样的问题的。
▶out对象
JSP是一种动态的网页,与HTML这一类静态文件的最大不同,在于同一份网页经过程序运算得以根据各种条件及情况进行呈现。out对象在这一方面提供相关支持,服务器端利用out对象将所要输出的内容,在传送至网页的时候动态写入客户端。
▶config、pageContext以及page对象
这三个对象被用于存取JSP网页程序运行阶段的各种信息内容,其中config包含JSP网页文件被编译成为Servlet之后的相关信息;pageContext则是提供系统运行期间的各种信息内容的存取操作功能;page代表目前正在运行的JSP网页对象。
▶exception对象
exception为JSP提供用于处理程序运行错误的异常对象,此对象搭配功能强大的异常处理机制,运用于JSP网页的程序除错和异常处理上。
一、request对象
request对象主要用于接受客户端通过HTTP协议连接传输到服务器端的数据,在客户端的请求中如果没有参数,则该对象就有一个参数列表,它通常是HttpServletRequest的子类,其作用域就是一次request请求。
1.1 request对象常用方法
方法 | 说明 |
Object getAttribute(String name) | 返回name所指定的属性值 |
void setAttribute(String name,Object obj) | 设定name所指定的属性值为obj |
void removeAttribute(String name) | 删除name所指定的属性 |
java.util.Enumeration getAttributeNames() | 返回request对象所有的属性名称集合 |
String getParameter(String name) | 从客户端获取name所指定的参数值 |
java.util.Enumeration getParameterNames() | 从客户端获取所有参数名称 |
String[] getParameterValues(String name) | 从客户端获取name所指定参数的所有值 |
void setCharacterEncoding(String chaen) | 设定请求正文中所使用的字符编码(只支持post提交的数据) |
1.2 request对象应用实例
▶String getParameter(String name)
用表单和超链接、<jsp:param>传递参数的时候,使用getParameter(String name)接收传递的参数。返回给定参数的值,当传递给此方法的参数名没有实际参数与之对应时,返回null。使用getParameter(String name)取得的值都是字符串类型,需要转换为需要的类型。
例:在requestInfo.jsp页面中输入用户名和密码,在showInfo.jsp页面将输入的用户名和密码显示出来:
requestInfo.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>使用request对象——requestInfo.jsp页面</title>
</head>
<body bgcolor="#ffc7c7">
<form name="form1" method="post" action="1showInfo.jsp">
<p align="center">用户名:<input type="text" name="username"></p>
<p align="center">密 码: <input type="password" name="password"></p>
<p align="center">
<input type="submit" name="Submit" value="提交">
<input type="reset" name="cancel" id="cancel" value="取消">
</p>
</form>
</body>
</html>
showInfo.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.util.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%
request.setCharacterEncoding("utf-8");
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>使用request对象——showInfo.jsp页面</title>
</head>
<body bgcolor="#ccffcc">
<h1>您刚才输入的内容是:<br></h1>
<%
Enumeration enu = request.getParameterNames(); //使用Enumeration时,需要在page标签里import="java.util.*"
while(enu.hasMoreElements()) {
String parameterName = (String)enu.nextElement();
String parameterValue = request.getParameter(parameterName);
out.print("参数名称:"+parameterName+"<br>");
out.print("参数内容:"+parameterValue+"<br>");
}
%>
</body>
</html>
运行结果:
▶String [ ] getParameterValues(String name)
getParameterValues( )能够取出变量的多个值,返回值类型为字符串数组String[ ]。主要用于获取复选框的值或是下拉列表带multiple属性值。
例:读取复选框数据。在hobby.html页面中选中多个选项,在hobbyInfo.jsp页面中将所选内容显示出来。
2hobby.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>用户选择爱好信息2hobby.html页面</title>
</head>
<body>
<form name="form1" method="post" action="2hobbyInfo.jsp">
<p>兴趣:
<input type="checkbox" name="Habit" value="Read">阅读
<input type="checkbox" name="Habit" value="Football">足球
<input type="checkbox" name="Habit" value="Swim">游泳
<input type="checkbox" name="Habit" value="Travel">旅游
<input type="checkbox" name="Habit" value="Music">音乐
<input type="checkbox" name="Habit" value="Others">其他
</p>
<p>
<input type="submit" value="提交">
<input type="submit" value="清除">
</p>
</form>
</body>
</html>
2hobbyInfo.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%request.setCharacterEncoding("gb2312"); %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>显示用户爱好信息2hobbyInfo.jsp</title>
</head>
<body>
您选择的兴趣为:
<%
String[] hobby = request.getParameterValues("Habit");
if(hobby!=null) {
for(int i=0; i<hobby.length; i++) {
if(hobby[i].equals("Read"))
out.println("阅读");
if(hobby[i].equals("Football"))
out.println("足球");
if(hobby[i].equals("Swim"))
out.println("游泳");
if(hobby[i].equals("Travel"))
out.println("旅游");
if(hobby[i].equals("Music"))
out.println("音乐");
if(hobby[i].equals("Others"))
out.println("其他");
}
}
%>
</body>
</html>
二、response对象
response对象用于将服务器端数据发送给客户端以响应客户端的请求。
response对象常用方法:
▶public void setContentType(String type) 动态响应contentType属性
当用户访问一个JSP页面时,如果该页面用page指令设置页面的contentType属性是text/html,那么JSP引擎将按照这种属性值做出反映。如果要动态改变这个属性值来响应客户,就需要使用response对象的setContentType(String s) 方法来改变contentType的属性值。
设置输出数据的类型的属性如下:
①text/html:网页 ②text/plain : 纯文本 ③application/x-msexcel : Excel文件 ④application/msword : Word文件
应用举例:创建setContentType.jsp页面,应用setContentType改变contentType的属性值。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%
String str = request.getParameter("submit");
if(str==null){
str = "";
}
if(str.equals("yes")) {
response.setContentType("application/msword;charset=gb2312");
}
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>setContentType.jsp页面</title>
</head>
<body>
<p>我正在学习response对象</p>
<p>将当前对象保存为Word文档吗?</p>
<form method="get" name="form">
<input type="submit" name="submit" value="yes">
</form>
</body>
</html>
点击打开:
▶设置刷新public void setHeader(String name,String value)
setHeader可以设置HTTP应答报文的首部字段和值;利用setHeader()方法可以设置页面的自动刷新。例如
response.setHeader("Refresh","5"); //5秒后自动刷新本页
response.setHeader("Refresh","5;URL = http://www.163.com"); //5秒后自动跳转到新页面
应用实例:在refresh.jsp页面中控制页面的刷新频率,在页面中实时显示当前时间。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%
String str = request.getParameter("submit");
if(str==null){
str = "";
}
if(str.equals("yes")) {
response.setContentType("application/msword;charset=gb2312");
}
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>setContentType.jsp页面</title>
</head>
<body>
<p>我正在学习response对象</p>
<p>将当前对象保存为Word文档吗?</p>
<form method="get" name="form">
<input type="submit" name="submit" value="yes">
</form>
</body>
</html>
▶void sendRedirect(String redirectURL)将客户端重定向到指定URL
在某些情况下,当响应客户时,需要将客户重新引导至另一个页面,可以使用response的sendRedirect(URL) 方法实现客户的重定向。
sendRedirect和<jsp:forward>的区别如下:
①response.sendRedirect()为客户端跳转(会在客户端呈现跳转后的URL地址即在浏览器地址栏会看到新的请求资源地址,这时的request和response都和第一次的不一样了,因为产生了新的request和response);
<jsp:forward>为服务器跳转(浏览器地址栏的地址保持不变,这种方法没有产生新的request和response,所以在同一个请求内,可以用request来传递参数)
②response.sendRedirect()带参的话,要在地址栏中写成×××.jsp?param1=…¶m2=…这样的形式传递参数;
<jsp:forward>能够使用<jsp:param/>标签向目标文件传递参数和值,目标文件必须是一个动态的文件能够处理参数。
③response.sendRedirect()方法后面的语句会继续执行,除非前面有return;
<jsp:forward>后面的语句不会被执行也不会继续发送到客户端。
④response.sendRedirect()方法需要客户端与服务器之间往返,可以转到任何页面包括网络有效域名,但速度比较慢;
<jsp:forward>是在服务器内部进行转换,只发送客户端最后转到的页面速度会比较快。
▶设定状态显示码的方法void 舌头Status(int n)
当服务器对请求进行响应时,发送的首行称为状态行。response的状态行包括3位数字的状态码。大致可以分为以下5类(1**表示1开头的三位数):
①1** :主要是实验性质的。
②2** :用来表示请求成功。
③3** :用来表示在请求满足之前应该采取进一步的行动。
④4** :但浏览器做出无法满足的请求时,返回该状态码。
⑤5** :用来表示服务器出现的问题。
▶void addCookie(Cookie cookie)【下一篇详细总结Cookie】
添加一个Cookie对象,用来保存客户端的用户信息,从而对下一次访问提供方便。可以通过request对象的getCookie()方法获得这个Cookie。
三、out对象
3.1 out对象的常用方法简述:
缓冲处理:
方法 | 说明 |
clear() | 清除缓冲区中的数据,若缓冲区中已经是空的,则会产生IOException的异常 |
clearBuffer() | 清除缓冲区中的数据,若缓冲区中已经是空的,并不会产生IOException的异常 |
flush() | 直接将暂存于缓冲区中的数据清空并输出到网页 |
getBufferSize() | 返回缓冲区的大小 |
getRemaining() | 返回缓冲区中剩余空间的大小 |
isAutoFlush() | 返回布尔值表示是否自动输出缓冲区中的数据 |
输出数据:
方法 | 说明 |
newLine() | 输出换行 |
print(datatype data) | 输出数据类型为datatype的数据data |
println(datatype data) | 输出数据类型为datatype的数据data,并且自动换行(下一个输出语句在下一行开始输出) |
1.2 缓冲区操作
缓冲区是JSP将数据输出至浏览器之前,用来暂时存储数据的一块区域,顾名思义,这块区域提供一种数据输出的缓冲机制,让数据从服务器真正送出到客户端浏览器之前能够有重新调整的机会。
四、session对象
session(会话)对象是类javax.servlet.Httpsession的一个对象。session是从客户端连接服务器开始,直到与服务器断开连接为止。session对象用于保存每个与服务器建立连接的客户端的信息,session的ID保存于客户端的Cookie中,这个sessionID标识唯一的用户,与其他的sessionID不同。
4.1session的概念
session存在于服务器端,当客户端用户向服务器提出请求打开网页时,若该网页中包含了为用户建立session的程序代码,则session便会产生。这个session可用来存放属于该用户的数据,且每一份网页都可以使用这个session中的内容,不过由于每一个session都是独立的,且其中数据内容互不相干,对不同的用户来说,网页所读取的内容就不同。
在服务器内部可能会由于有多个不同的用户同时上线而建立多个session,这样,当用户向服务器提出请求时,服务器端会用以下方法来辨别该用户属于哪一个session:当服务器为某一个用户建立session之后,会给session一个用于识别的字符串,此字符串还会传送到客户端并记录在浏览器的Cookie中,当用户再度向服务器提出请求时,此字符串数据便会一并传送,这样,服务器端在接收到此字符串数据后,再与各session的的标识符串进行对比后,便可知道用户有哪一份session数据。
4.2 session对象的ID
当一个客户首次访问服务器上的一个JSP页面时,JSP引擎产生一个session对象,同时分配一个String类型的ID号,JSP引擎同时将这个ID号发送到客户端,存放在Cookie(Cookie是Web服务器保存在用户硬盘上的一段文本)中,这样session对象和客户之间就建立了一一对应的关系。当用户再访问连接该服务器的其他页面时,不再分配给用户新的session对象,直到客户关闭浏览器之后,服务器端该客户的session对象才取消,并且和客户的会话对应关系消失。当客户重新打开浏览器再连接到该服务器时,服务器为该客户再重新建立一个新的session对象。
采用getId() 方法返回session对象在服务器端的编号。每产生一个session对象,服务器端都会给它一个编号,并且该编号不会重复,这样服务器才能根据编号来识别session,并且正确的处理某一个特定的session及其提供的服务。
4.3 session的有效期限
session和application相同,有其存在的的期限,当以下4种情况发生一种时,session与其中的数据就会清空。
①用户关闭当前正在使用的浏览器程序
②关闭网页服务器
③用户未向服务器提出的请求超过预设的时间(Tomcat预设为30分钟)
④运行程序结束session。
4.4 访问session中的数据
①建立session对象
在JSP中,当程序使用session对象时,不需要特别设置程序代码来建立用户session,便会自动建立session。用 session.setAttribute("变量名称",变量内容); 在session中新增变量数据的方式。(变量内容可为字符串或其他对象类型)
<%
session.setAttribute("id", "编号"); //设置字符串
session.setAttribute("expire", new Date(86400*10)); //设置日期
session.setAttribute("level", new Integer(3)); //设置整数
%>
上面的代码在session中建立了3个变量数据:id、expire与level,用户在当前浏览器中打开各个网页都能访问这些变量数据,不过要是打开了另一个浏览器窗口,或者用户是其他联机的用户,将无法取得其中的内容。
②返回session中的变量
在session中设置了变量数据之后,在其他各个网页中便可以使用session.getAttribute("变量名称"); 读取其中的内容,此方法所返回的数据类型为对象(Object)类型。(不推荐使用getValue())
③返回所有session中的变量名称
session.getAttributeNames();方法可以取出session中所有变量的名称,七结果为一个枚举类的实例。
④清除session中的变量
session.removeAttribute("变量名称"); 方法可以清除session中的变量数据。
⑤结束session
对于已经建立的session,可以使用 session.invalidate(); 方法将其结束。
4.5 session对象的其他方法
方法 | 说明 |
getCreationTime() | 返回session建立的时间,返回值为从格林威治时间1970年1月1日开始算到session建立时的毫秒数 |
getLastAccessedTime() | 返回客户端对服务器端提出请求至处理session中数据最后的时间,若为新建的session,则返回-1 |
getMaxInactiveInterval() | 返回客户端未对session提出请求而session开始停滞到自动消失之间所间隔的时间,返回值单位为秒 |
isNew() | 返回布尔值表示是否为新建的session (新建是指程序调用session对象在服务器端建立session,而尚未将此session的信息记录到客户端的Cookie中) |
setMaxInactiveInterval(int interval) | 设置客户端未对session提出请求而session开始停滞到自动消失之间所间隔的时间为interval,以秒为单位 |
4.6 session对象应用实例
例①引用session对象的方法,显示session对象的部分属性值
sessionMethod.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>引用session的方法sessionMethod.jsp</title>
</head>
<body>
<h2>session方法的第一个页面</h2>
<%
session.setAttribute("user1","sessionTest1");
session.setAttribute("user2","sessionTest2");
%>
<table border="1">
<tr>
<th align="left">session建立的时间</th>
<td><%=session.getCreationTime() %></td>
</tr>
<tr>
<th align="left">session的标识符串</th>
<td><%=session.getId() %></td>
</tr>
<tr>
<th align="left">session最后被请求的时间</th>
<td><%=session.getLastAccessedTime() %></td>
</tr>
<tr>
<th align="left">session预设结束的时间</th>
<td><%=session.getMaxInactiveInterval() %></td>
</tr>
<%session.setMaxInactiveInterval(session.getMaxInactiveInterval()+100); %>
<tr>
<th align="left">session新的有效时间</th>
<td><%=session.getMaxInactiveInterval() %></td>
</tr>
<tr>
<th align="left">是否为新建的session</th>
<td><%=session.isNew() %></td>
</tr>
<tr>
<th align="left">session1对象取值</th>
<td><%=session.getAttribute("user1") %></td>
</tr>
<tr>
<th align="left">session2对象取值</th>
<td><%=session.getAttribute("user2") %></td>
</tr>
</table>
<%
session.removeAttribute("user1");
//session.invalidate(); //结束session
%>
<p><a href="sessionMethodInfo.jsp">转到下一页</a>
</body>
</html>
sessionMethodInfo.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>session方法sessionMethodInfo.jsp</title>
</head>
<body>
<h2>session方法的第二个页面</h2>
<table border="1">
<tr>
<th align="left">session建立的时间</th>
<td><%=session.getCreationTime() %></td>
</tr>
<tr>
<th align="left">session的标识符串</th>
<td><%=session.getId() %></td>
</tr>
<tr>
<th align="left">session最后被请求的时间</th>
<td><%=session.getLastAccessedTime() %></td>
</tr>
<tr>
<th align="left">session预设结束的时间</th>
<td><%=session.getMaxInactiveInterval() %></td>
</tr>
<%session.setMaxInactiveInterval(session.getMaxInactiveInterval()+100); %>
<tr>
<th align="left">session新的有效时间</th>
<td><%=session.getMaxInactiveInterval() %></td>
</tr>
<tr>
<th align="left">是否为新建的session</th>
<td><%=session.isNew() %></td>
</tr>
<tr>
<th align="left">session1对象取值</th>
<td><%=session.getAttribute("user1") %></td>
</tr>
<tr>
<th align="left">session2对象取值</th>
<td><%=session.getAttribute("user2") %></td>
</tr>
</table>
</body>
</html>
执行结果:
例②统计访问站点的用户数目
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>session计数器sessionCount.jsp</title>
</head>
<body>
<%!int Num = 0; %>
<%
if(session.isNew()) {
Num += 1;
session.setAttribute("Num", Num);//将Num变量值存入session
}
%>
<center><font size="5">session计数器</font></center>
<br>
<center>
<font color="blue">您是第</font>
<font color="green"><%=session.getAttribute("Num") %></font>
<font color="blue">个访问本网站的用户</font>
</center>
</body>
</html>
session会判断是否为一个新的用户!!!
五、application内置对象
application对服务器而言,可以视为一个所有联机用户共享的数据存取区,application中的变量数据在程序在程序设置其值时被初始化,而当关闭网页服务器,或者超过预设时间而未有任何用户联机时将自动消失。
对每一个联机浏览网页的用户来说,application对象用于存储其共享数据,无论是网站中任何一份网页,用户存取的数据内容均相同,可以将其视为传统应用程序中的全局共享数据。需要注意以下方面:
▶application对象保存了一个应用系统中共有的数据,一旦创建了application对象,除非服务器关闭,否则application对象将一直保存,并为所有客户共享。
▶服务器启动后就会自动创建application对象,当客户在所访问的网站的各个页面之间浏览时,这个application对象都是同一个,直到服务器关闭。但session不同的是,所有客户的application对象都是同一个,即所有客户共享这个内置的application对象。
▶在JSP服务器运行时,仅会有一个application对象,它由服务器创建,也由服务器自动清除,不能被用户创建和清除。
5.1 存取application中的数据
application对象是通过ServletContext接口衍生而来的,利用此对象所提供的各种方法,便可处理application的数据,下面就来说明存取application中数据的方式。
①建立application变量(同session)
除了系统预设的application变量外,要在application中建立变量数据就必须要使用application.setAttribute("变量名",变量内容); 方法。
②返回application中的变量
使用application.getAttribute(“变量名”); 取得变量内容,此方法返回的数据内容为对象(Object)类型。
③删除application变量
application.removeAttribute("变量名");
④返回所有application变量
application.getAttributeNames("变量名"); 返回application中所有变量名称的集合对象,数据类型为Enumeration。
5.2使用application对象取得信息
使用application对象获取信息的一些常用方法:
方法 | 说明 |
getMajorVersion() | 返回服务器解释引擎所支持的最新Servlet API版本 |
getMinorVertion() | 返回服务器解释引擎所支持的最低Servlet API版本 |
getMimeType(String file) | 返回文件file的文件格式与编码方式 |
getRealPath(String path) | 返回虚拟路径path的真实路径 |
getServerInfo() | 返回服务器解释引擎的信息 |
5.3application对象应用实例
将session的最后那个记录用户数的例子中的session改为application,运行后不断的刷新,会看到计数器不断增加。重新开启新的浏览器窗口,计数器也会增加。
一般session做计数器是记录访问的用户数,而application是记录被访问的次数。
六、pageContext对象
pageContext对象可以得到当前页面中所有其他的JSP隐含对象,例如getRequest()、getResponse()、getOut()和getSession()等,并提出了处理JSP各个对象的属性的方法。
方法 | 说明 |
Object getAttribute(String name) | 返回当前页面内的name属性 |
void setAttribute(String name,Object obj) | 设定当前页面内name变量值为obj |
void removeAttribute(String name) | 删除当前网页内的name变量 |
HttpSession getSession() | 取得页面的session对象 |
ServletContext getServletContext() | 返回ServletContext对象,这个对象对所有的页面都是共享的 |
javax.servlet.ServletRequest getRequest() | 该方法的返回对象是JSP内置对象request,主要用于获取客户端的信息 |
pageContext设置变量值可以用 setAttribute(String name,Object obj,int scope); 其中,scope的取值可以为PAGE_SCOPE、REQUEST_SCOPE、SESSION_SCOPE和APPLICATION_SCOPE,分别代表页面有效、请求有效、会话有效和应用有效。
七、config对象
config对象主要用来取得服务器的配置信息,在JSP页面通过JSP Container进行初始化时被传递。使用config对象,在修改需要在Web服务器中处理的变量时,不需要逐一修改JSP文件,而只需要修改相关属性文件的内容,这样就大大简化了网络维护工作,而且能够避免由于忘记修改一些文件而造成的错误。
config对象的主要方法:
方法 | 说明 |
String getInitParameter(String name) | 返回name所指定的初始参数 |
java.util.Enumeration getInitParameterNames() | 返回所有初始参数 |
ServletContext getServletContext() | 返回Servlet相关的上下文对象 |
String getServletName() | 返回Servlet名称 |
八、page对象
page对象代表了正在运行的由JSP文件产生的类对象,此对象在JSP中并不常用,我们只需要了解其意义即可。
page对象是指向当前JSP程序本身的对象,有点像类中的this。page其实是java.lang.Object类的实例对象,它可以使用Object类的方法,例如hashCode()、toString()等方法。page对象在JSP程序中的应用不是很广,但是java.lang.Object类还是十分重要的,因为JSP内置对象的很多方法的返回类型是Object,需要用到Object类的方法。
九、exception对象
exception对象是类java.lang.Throwable的一个对象,是为JSP提供用于处理程序运行错误的异常对象,可以配合page指令一起使用。通常指定某一个页面为错误处理页面,把所有的错误集中到那一个页面进行处理,可以使整个系统的健壮性得到加强,也可以使程序的流程更加简单明晰。
方法 | 说明 |
String getMessage() | 返回错误信息 |
String getLocalizedMessage() | 取得本地语系的错误提示信息 |
void printStackTrace() | 以标准错误的形式输出一个错误和错误的堆栈 |
String toString() | 该方法以字符串的形式返回一个对异常的描述 |
Throwable fillInStackTrace() | 重写错误的堆栈 |