必威体育Betway必威体育官网
当前位置:首页 > IT技术

JSP内置对象

时间:2019-10-11 07:41:04来源:IT技术作者:seo实验室小编阅读:89次「手机版」
 

jsp内置对象

JSP提供了由容器实现和管理的内置对象,也可以称之为隐含对象,由于JSP使用java作为脚本语言,所以JSP将具有强大的对象处理能力,并且可以动态创建Web页面内容。但Java语法在使用一个对象前,需要先实例化这个对象,这其实是一件比较烦琐的事情。JSP为了简化开发,提供了一些内置对象,用来实现很多JSP应用。在使用JSP内置对象时,不需要先定义这些对象,直接使用即可。

在JSP中一共预先定义了9个这样的对象,分别为requestresponsesessionAPPlication、out、pagecontext、config、page和exception。

内置对象 类型
request javax.servlet.http.HttpServletRequest
response javax.servlet.http.HttpServletResponse
session javax.servlet.http.HttpSession
application javax.servlet.ServletContext
out javax.servlet.jsp.JspWriter
pageContext javax.servlet.jsp.PageContext
config javax.servlet.ServletConfig
page javax.servlet.jsp.JspPage
exception javax.servlet.jsp.JspException

1、request对象

request对象封装了由客户端生成的HTTP请求的所有细节,主要包括HTTP头信息、系统信息、请求方式和请求参数等。通过request对象提供的相应方法可以处理客户端浏览器提交的HTTP请求中的各项参数。

request对象的常用方法:

方法 说明
String getparameter(String name) 根据页面表单组件名称获取页面提交数据
String[] getParameterValues(String name) 获取一个页面表单组件对于多个值时的用户的请求数据。
void setCharacterEncoding(String env) 指定每个请求的编码,在调用 request.getparameter() 方法之前进行设定,可以用于解决中文乱码问题。
request.getRequestDispatcher(String path) 返回一个 javax.servlet.RequestDispatcher 对象,该对象的 forward 方法用于转发请求。
void setAttribute(String name,Object object) 方法将数据保存到request范围内的变量中。
Object getAttribute(String name) 获取request范围内的变量中的数据。
void removeAttribute(String name) 删除request范围内的变量中的数据。
Cookie[] getCookies() 获取到所有cookie对象的集合。

1.1 访问请求参数

我们知道request对象用于处理HTTP请求中的各项参数。在这些参数中,最常用的就是获取访问请求参数。当我们通过超链接的形式发送请求时,可以为该请求传递参数,这可以通过在超链接的后面加上问号“?”来实现。注意这个问号为英文半角的符号。

如果要同时指定多个参数,各参数间使用与符号“&”分隔即可。

示例:在页面中定义超链接。

<a href="delete.jsp?id=1">删除</a>

在delete.jsp页面中,可以通过request对象的getParameter()方法获取传递的参数值。

<%
    String id = request.getParameter("id");  //获取id参数的值
%>

示例:编程学员注册功能。要求提交注册信息后,显示学员输入的数据。

(1)注册页面 reginput.jsp。

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>学员注册</title>
</head>
<body>
	<p align="center">请输入注册信息
		<form name="form1" method="post" action="reginfo.jsp">
			<table border="0" align="center">
				<tr>
					<td>用户姓名:</td>
					<td><input type="text" name="name" style="width:250px;" /></td>
				</tr>
				<tr>
					<td>博客地址:</td>
					<td><input type="text" name="blog" style="width:250px;"/></td>
				</tr>
				<tr>
					<td>兴趣爱好:</td>
					<td>
						<input type="checkbox" name="interests" value="足球"  />足球
						<input type="checkbox" name="interests" value="篮球"  />篮球
						<input type="checkbox" name="interests" value="羽毛球"  />羽毛球
						<input type="checkbox" name="interests" value="乒乓球"  />乒乓球
					</td>
				</tr>
				<!-- 以下是提交、取消按钮 -->
				<tr>
					<td>
						<input type="submit" value="提交" />
					</td>
					<td>
						<input type="reset" value="取消" />
					</td>
				</tr>
			</table>
		</form>
	</p>
</body>
</html>

(2)注册提交页面 reginfo.jsp。

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
	request.setCharacterEncoding("UTF-8");       //设置请求编码
	String name = request.getParameter("name");  //获取用户名
	String blog = request.getParameter("blog");  //获取博客地址
	
	//获取兴趣爱好
	String[] interests = request.getParameterValues("interests");
	String interStr = "";
	if(interests != null)
	{
		for(String item : interests)
		{
			interStr += item + ";";
		}
	}
%>
 
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>注册信息</title>
</head>
<body>
	用户姓名:<%= name %><br/>
	博客地址:<%= blog %><br/>
	兴趣爱好:<%= interStr %>
</body>
</html>

执行结果:

(1)注册页面 reginput.jsp

(2)注册提交页面 reginfo.jsp

1.2 在作用域中管理属性

在进行请求转发时,需要把一些数据传递到转发后的页面进行处理。这时,就需要使用request对象的setAttribute()方法将数据保存到request范围内的变量中。request对象的setAttribute()方法的语法格式如下:

request.setattribute(String name,Object object);

在将数据保存到request范围内的变量中后,可以通过request对象的getAttribute()方法获取该变量的值,具体的语法格式如下:

request.getAttribute(String name)

1.3 获取cookie

cookie的中文意思是小甜饼,然而在互联网上的意思与这就完全不同了。它和食品完全没有关系。在互联网中,cookie是小段的文本信息,在网络服务器上生成,并发送给浏览器的。通过使用cookie可以标识用户身份,记录用户名和密码,跟踪重复用户等。浏览器将cookie以key/value的形式保存到客户机的某个指定目录中。

通过cookie的getCookies()方法即可获取到所有cookie对象的集合;通过cookie对象的getName()方法可以获取到指定名称的cookie;通过getValue()方法即可获取到cookie对象的值。另外将一个cookie对象发送到客户端使用了response对象的addCookie()方法。

示例:通过cookie保存用户信息。

(1)写入cookie对象页面 index.jsp。

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>写入cookie对象</title>
</head>
<body>
<%
	//写入cookie对象
	request.setCharacterEncoding("UTF-8");  //设置请求的编码
	Cookie cookie = new Cookie("userCookie","pan_junbiao的博客");  //创建并实例化cookie对象
	cookie.setMaxAge(60*60*24*30);  //设置cookie有效期为30天
	response.addCookie(cookie);  //保存cookie对象
%>

<script type="text/JavaScript">window.location.href="deal.jsp"</script>
</body>
</html>

(2)读取cookie值页面 deal.jsp。

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>读取cookie值</title>
</head>
<body>
<%
	//读取cookie值
	Cookie[] cookies = request.getCookies();  //从request中获取cookie对象的集合
	String user = "";
	if(cookies != null)
	{
		//遍历cookie对象集合
		for(Cookie cookieItem : cookies)
		{
			if(cookieItem.getName().equals("userCookie"))
			{
				user = cookieItem.getValue();  //读取cookie对象的的值
			}
		}
	}
%>

用户信息:<%= user %>
</body>
</html>

1.4 解决中文乱码

在上面的代码中我们为id参数传递了一个字符串类型的值“001”,如果将这个参数的值更改为中文,则在show.jsp就会发生大家都不愿意看到的问题——在显示参数值时中文内容变成了乱码。这是因为请求参数的文字编码方式与页面中的不一致所造成的,所有的request请求都是iso-8859-1的,而在此页面采用的是UTF-8的编码方式。要解决此问题,只要将获取到的数据通过String的构造方法使用指定的编码类型重新构造一个String对象即可正确地显示出中文信息。

<body>
	<a href="deal.jsp?name=张三&sex=男">解决中文乱码</a>
</body>
<body>
	name参数的值为:<%=new String(request.getParameter("name").getBytes("iso-8859-1"),"UTF-8") %><br>
	sex参数的值为:<%=request.getParameter("sex") %>
</body>

1.5 获取客户端信息

通过request对象可以获取客户端的相关信息,如HTTP报头信息,客户信息提交方式、客户端主机IP地址、端口号等。

request获取客户端信息的常用方法:

方法 说明
getHeader(String name) 获取HTTP协议定义的文件头信息。
getHeader(String name) 返回指定名字的request Header的所有值,其结果是一个枚举型的示例。
getHeaderNames() 返回所有request Header的名字,其结果是一个枚举型的实例。
getMethod() 获取客户端向服务器端传送数据的方法,如get、post、header、trace等。
getProtocol() 获取客户端向服务器端传送数据所依据的协议名称。
getRequestURI() 获取发出请求字符串的客户端地址,不包括请求参数。
getRequestURL() 获取发出请求字符串的客户端地址。
getrealpath(String path) 返回当前请求文件的绝对路径
getRemoteAddr() 获取客户端的IP地址。
getRemoteHost() 获取客户端的主机名。
getServerName() 获取服务器的名字。
getServletPath() 获取客户端所请求的脚本文件的文件路径。
getServerPort() 获取服务器的端口号

示例:使用request对象的相关方法获取客户端信息。

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>使用request对象的相关方法获取客户端信息</title>
</head>
<body>
	<br>客户提交信息的方式:<%=request.getMethod()%>
	<br>使用的协议:<%=request.getProtocol()%>
	<br>获取发出请求字符串的客户端地址:<%=request.getRequestURI()%>
	<br>获取发出请求字符串的客户端地址:<%=request.getRequestURL()%>
	<br>获取提交数据的客户端IP地址:<%=request.getRemoteAddr()%>
	<br>获取服务器端口号:<%=request.getServerPort()%>
	<br>获取服务器的名称:<%=request.getServerName()%>
	<br>获取客户端的主机名:<%=request.getRemoteHost()%>
	<br>获取客户端所请求的脚本文件的文件路径:<%=request.getServletPath()%>
	<br>获得http协议定义的文件头信息Host的值:<%=request.getHeader("host")%>
	<br>获得Http协议定义的文件头信息User-Agent的值:<%=request.getHeader("user-agent")%>
	<br>获得Http协议定义的文件头信息accept-language的值:<%=request.getHeader("accept-language")%>
	<br>获得请求文件的绝对路径:<%=request.getRealPath("index.jsp")%>
</body>
</html>

执行结果:

客户提交信息的方式:GET

使用的协议:HTTP/1.1

获取发出请求字符串的客户端地址:/first/index.jsp

获取发出请求字符串的客户端地址:http://127.0.0.1:8080/first/index.jsp

获取提交数据的客户端IP地址:127.0.0.1

获取服务器端口号:8080

获取服务器的名称:127.0.0.1

获取客户端的主机名:127.0.0.1

获取客户端所请求的脚本文件的文件路径:/index.jsp

获得Http协议定义的文件头信息Host的值:127.0.0.1:8080

获得Http协议定义的文件头信息User-Agent的值:Mozilla/5.0 (windows NT 6.2; Win64; x64; Trident/7.0; rv:11.0) like Gecko

获得Http协议定义的文件头信息accept-language的值:zh-CN

获得请求文件的绝对路径:D:\Eclipse-workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\first\index.jsp

1.6 显示国际化信息

浏览器可以通过accept-language的HTTP报头向Web服务器指明它所使用的本地语言。request对象中的getlocale()和getLocales()方法允许JSP开发人员获取这一信息,获取的信息属于java.util.Local类型。java.util.Local类型的对象封装了一个国家和一种国家所使用的语言。使用这一信息,JSP开发者就可以使用语言所特有的信息作出响应。

示例:页面信息国际化。

<%
	java.util.Locale locale = request.getLocale();
	String str = "";
	if(locale.equals(java.util.Locale.US))
	{
		str = "Hello, Welcome to pan_junbiao's blog!";
	}
	else if(locale.equals(java.util.Locale.CHINA))
	{
		str = "您好,欢迎访问 pan_junbiao的博客!";
	}
%>

<%= str %>

2、response对象

response对象用于响应客户请求,向客户端输出信息。它封装了JSP产生的响应,并发送到客户端以响应客户端的请求。请求的数据可以是各种数据类型,甚至是文件。response对象在JSP页面内有效。

request对象的常用方法:

方法 说明
sendRedirect(String path) 网页重定向到另一个页面。
setHeader(String name, String value) 设置HTTP响应报头信息。

2.1 重定向网页

使用response对象提供的sendRedirect()方法可以将网页重定向到另一个页面。重定向操作支持将地址重定向到不同的主机上,这一点与转发不同。在客户端浏览器上将会得到跳转的地址,并重新发送请求链接。用户可以从浏览器的地址栏中看到跳转后的地址。进行重定向操作后,request中的属性全部失效,并且开始一个新的request对象。sendRedirect()方法的语法格式如下:

response.sendredirect(String path);

参数说明:

path:用于指定目标路径,可以是相对路径,也可以是不同主机的其他url地址

示例:使用response对象提供的sendRedirect()方法重定向到登录页面。

<%
	response.sendRedirect("login.jsp");  //重定向到登录页面
%>

2.2 处理HTTP文件头

通过response对象可以设置HTTP响应报头,其中,最常用的是禁用缓存、设置页面自动刷新和定时跳转网页。下面分别进行介绍。

设置HTTP响应报头方法的语法格式如下:

response.setheader(String name, String value);

2.2.1 禁用缓存

在默认情况下,浏览器将会对显示的网页内容进行缓存,这样可以提高网页的显示速度。对于一些安全性要求比较高的网站,通常需要禁用缓存。

示例:通过设置HTTP头的方式实现禁用缓存。

<%
	response.setHeader("cache-Control", "no-store");
	response.setDateHeader("expires", 0);
%>

2.2.2 设置页面自动刷新

通过设置HTTP头还可以实现页面的自动刷新。

示例:使页面每隔10秒自动刷新一次。

<%
	response.setHeader("refresh", "10");
%>

2.2.3 定时跳转网页

通过设置HTTP头还可以实现定时跳转页面功能。

示例:使页面5秒后自动跳转到指定的网页。

<%
	response.setHeader("refresh", "5;URL=login.jsp");
%>

2.3 设置输出缓冲

通常情况下,服务器要输出到客户端的内容不会直接写到客户端,而是先写到一个输出缓冲区,在计算机术语中,缓冲区被定义为暂时放置输入或输出资料的内存。实际上,缓冲区也可以这样理解:在一个粮库中,由于装缷车队的速度要快于传送带的传输速度,为了不造成装缷车队的浪费,粮库设计了一个站台,装缷车队可以先将运送的粮食缷到这个平台上,然后让传送机慢慢传送。粮库的这个站台就起到了缓冲的作用。

response对象提供的对缓冲区进行配置的方法:

方法 说明
flushBuffer() 强制将缓冲区的内容输出到客户端。
getBufferSize() 获取响应所使用的缓冲区的实际大小,如果没有使用缓冲区,则返回0。
setBufferSize(int size) 设置缓冲区大小。
reset() 清除缓冲区的内容,同时清除状态码和报头。
isCommitted() 检查服务器端是否已经把数据写入到可客户端。

示例:设置缓冲区的大小为32KB。

<%
	response.setBufferSize(32);
%>

说明:如果将缓冲区的大小设置为0KB,则表示不缓冲。

3、session对象

session在网络中被称为会话。由于HTTP协议是一种无状态协议,也就是当一个客户向服务器发出请求,服务器接收请求,并返回响应后,该连接就结束了,而服务器并不保存相关的信息。为了弥补这一缺点,HTTP协议提供了session。通过session可以在应用程序的Web页面间进行跳转时,保存用户的状态,使整个用户会话一直存在下去,直到关闭浏览器。但是,如果在一个会话中,客户端长时间不向服务器发出请求,session对象就会自动消失。这个时间取决于服务器,例如,Tomcat服务器默认为30分钟。不过这个时间可以通过编写程序进行修改。

session对象的常用方法:

方法 说明
setAttribute(String name,Object value) 该方法用于将信息保存到session范围内。
Object getAttribute(String name) 该方法用于获取session信息,返回值为Object类型。
removeAttribute(String name) 移除session对象。
invalidate() 销毁session对象。
long getLastAccessedTime() 返回客户端最后一次与会话相关联的请求时间。
int getMaxInactiveInterval() 以秒为单位返回一个会话内两次请求最大时间间隔。
setMaxInactiveInterval(int interval) 以秒为单位设置session的有效时间。
long getCreationTime() 返回session对象被创建的时间, 以毫秒为单位,从1970年1月1号凌晨开始算起。
String getId() 返回session对象的ID。
boolean isNew() 返回是否为一个新的客户端,或者客户端是否拒绝加入session。

示例:保存与获取session对象信息。

<%
	session.setattribute("UserName", "pan_junbiao的博客");           //保存session对象
	String userName = session.getattribute("UserName").toString();  //获取session对象
%>

配置web.xml文件:

如果使用的是Tomcat,可以向下面这样配置web.xml文件:

<session-config>
	<session-timeout>15</session-timeout>
</session-config>

超时以分钟为单位,Tomcat中的默认的超时时间是30分钟。

Servlet中的getMaxInactiveInterval( ) 方法以秒为单位返回超时时间。如果在web.xml中配置的是15分钟,则getMaxInactiveInterval( ) 方法将会返回900。

4、application对象

application对象用于保存所有应用中的共有数据。它在服务器启动时自动创建,在服务器停止时销毁。当application对象没有被销毁时,所有用户都可以共享该application对象。与session对象相比,application对象的生命周期更长,类似于系统的“全局变量”。

application对象的常用方法:

方法 说明
String getInitParameter(String name) 获取已命名的应用程序初始化参数值。
Enumeration<String> getInitParameterNames() 获取所有已定义的应用程序初始化参数名的枚举。
Enumeration<String> getAttributeNames() 获取所有application对象使用的属性名。
Object getAttribute(String name) 从application对象中获取指定对象名。
void setAttribute(String key,Object obj) 使用指定名称和指定对象在application对象中进行关联。
void removeAttribute(String name) 从application对象中去掉指定名称的属性。

4.1 访问应用程序初始化参数

application对象提供了对应用程序初始化参数进行访问的方法。应用程序初始化参数在web.xml文件中进行设置,web.xml文件位于Web应用所在目录下的WEB-INF子目录中。在web.xml文件中通过<context-param>标记配置应用程序初始化参数。

示例:在web.xml文件中配置连接mysql数据库所需的url参数。

  <context-param>
  	<param-name>url</param-name>
  	<param-value>jdbc:mysql://127.0.0.1:3306/db_database</param-value>
  </context-param>
</web-app>

application对象提供了两种访问应用程序初始化参数的方法。

4.1.1 getInitParameter(String name)方法

String getInitParameter(String name)方法用于获取已命名的应用程序初始化参数值。

示例:获取上面web.xml文件中配置的url参数的值。

<%
	String url = application.getInitParameter("url");
%>

4.1.2 getInitParameterNames()方法

Enumeration<String> getInitParameterNames()方法获取所有已定义的应用程序初始化参数名的枚举。

示例:使用getInitParameterNames()方法获取web.xml文件中定义的全部应用程序初始化参数,并通过循环输出。

<%@ page import="java.util.*" %>
<%
	Enumeration<String> enume = application.getInitParameterNames();   //获取全部初始化参数
	while(enume.hasMoreElements())
	{
		String name = enume.nextElement();                  //获取参数名
		String value = application.getInitParameter(name);  //获取参数值
		out.println(name + ":");  //输出参数名
		out.println(value);        //输出参数值
	}
%>

4.2 管理应用程序环境属性

与session对象相同,也可以在application对象中设置属性。与session对象不同的是,session只是在当前客户的会话范围内有效,当超过保存时间,session对象就被收回;而application对象在整个应用区域中都有效。

<%
	application.setAttribute("UserName", "pan_junbiao的博客");           //保存application对象
	String userName = application.getAttribute("UserName").toString();  //获取application对象
%>

5、out对象

out对象用于在Web浏览器内输出信息,并且管理应用服务器上的输出缓冲区。在使用out对象输出数据时,可以对数据缓冲区进行操作,及时清除缓冲区中的残余数据,为其他的输出让出缓冲空间。待数据输出完毕后,要及时关闭输出流。

5.1 向客户端输出数据

out对象一个最基本的应用就是向客户端浏览器输出信息。out对象可以输出各种数据类型的数据,在输出非字符串类型的数据时,会自动转换为字符串进行输出。out对象提供了print()和println()两种向页面中输出信息的方法。

5.1.1 print()方法

示例:通过两种方式向客户端浏览器输出文字。

<%
	out.print("您好,pan_junbiao的博客");
%>

<%= "您好,pan_junbiao的博客" %>

5.1.2 println()方法

println()方法也可以用于向客户端浏览器输出信息,该方法输出内容后,还输出一个换行符。

示例:使用println()方法向客户端浏览器输出文字。

<pre>
<%
	out.println("您好!");
	out.println("欢迎访问 pan_junbiao的博客");
	out.println("博客地址:https://blog.csdn.net/pan_junbiao");
%>
</pre>

说明:使用println()方法输出内容要有换行的效果,需要同时使用HTML的<pre>标记括起来,否则无法显示换行效果。

执行效果:

5.2 管理响应缓冲

out对象的另一个比较重要的功能就是对缓冲区进行管理。通过调用out对象的clear()方法可以清除缓冲区的内容。这类似于重置响应流,以便重新开始操作。如果响应已经提交,则会有产生IOException异常的负作用。out对象还提供了另一种清除缓冲区内容的方法,那就是clearBuffer()方法,通过该方法可以清除缓冲区的“当前”内容,而且即使内容已经提交给客户端,也能够访问该方法。除了这两个方法外,out对象还提供了其他用于管理缓冲区的方法。

out对象用于管理缓冲区的方法如下:

方法 说明
clear() 清除缓冲区中的内容。
clearBuffer() 清除当前缓冲区中的内容。
flush() 刷新流。
isAutoFlush() 检测当前缓冲区已满时是自动清空,还是抛出异常。
getBufferSize() 获取缓冲区的大小。

6、获取会话范围的pageContext对象

获取页面上下文的pageContext对象是一个比较特殊的对象,通过它可以获取JSP页面的request、response、session、out、exception等对象。pageContext对象的创建和初始化都是由容器来完成的,JSP页面中可以直接使用pageContext对象。

pageContext对象的常用方法:

方法 说明
forward(String relativeUrlPath)

把页面转发给另一个页面。

getAttribute(String name) 获取参数值。
getAttributeNamesInScope(int scope) 获取某范围的参数名称的集合。
getException() 获取exception对象。
getRequest() 获取request对象。
getResponse() 获取response对象。
getSession() 获取session对象。
getOut() 获取out对象。
setAttribute(String name,Object value) 为指定范围内的属性设置属性值。
removeAttribute(String name) 删除指定范围内的指定对象。

说明:pageContext对象在实际JSP开发过程中很少使用,因为request和response等对象均为内置对象,如果通过pageContext对象来调用这些对象比较麻烦。

7、读取web.xml配置信息的config对象

config对象主要用于取得服务器的配置信息。当一个Servlet初始化时,容器把某些信息通过config对象传递给这个Servlet。开发者可以在web.xml文件中为应用程序环境中的Servlet程序和JSP页面提供初始化参数。

config对象的常用方法如下:

方法 说明
getServletContext() 获取Servlet上下文。
getServletName() 获取Servlet服务器名。
getInitParameter(String name) 获取服务器所有初始化参数名称。
getInitParameterNames() 获取服务器中name参数的初始值。

8、应答或请求的page对象

page对象代表JSP本身,只有在JSP页面内才是合法的。page对象本质上是包含当前Servlet接口引用的变量,可以看作是this关键字的别名。

page对象的常用方法如下:

方法 说明
getClass() 返回当前Object的类。
hashCode() 返回该Object的哈希代码。
toString() 把该Object类转换成字符串。
equals(Object obj) 比较该对象和指定的对象是否相等。

示例:创建index.jsp文件,在该文件中调用page对象的各方法,并显示返回结果。

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>page对象各方法的应用</title>
</head>
<body>
<%!	Object object; 	//声明一个Object型的变量		%>
<ul>
    <li>getClass()方法的返回值:<%=page.getClass()%></li>
    <li>hashCode()方法的返回值:<%=page.hashCode()%></li>
    <li>toString()方法的返回值:<%=page.toString()%></li>
    <li>与Object对象比较的返回值:<%=page.equals(object)%></li>
    <li>与this对象比较的返回值:<%=page.equals(this)%></li>
</ul>
</body>
</html>

执行结果:

getClass()方法的返回值:class org.apache.jsp.index_jsp

hashCode()方法的返回值:767354948

toString()方法的返回值:org.apache.jsp.index_jsp@2dbce844

与Object对象比较的返回值:false

与this对象比较的返回值:true

9、获取异常信息的exception对象

exception对象用来处理JSP文件执行时发生的所有错误和异常,只有在page指令中设置 isERRORPage属性值为true的页面中才可以被使用,在一般的JSP页面中使用该对象将无法编译JSP文件。exception对象几乎定义了所有异常情况,在Java程序中,可以使用try...catch关键字来处理异常情况,如果在JSP页面中出现没有捕获到的异常,就会生成exception对象,并把exception对象传送到在page指令中定义的错误页面中,然后在错误页面中处理相应的exception对象。

exception对象的常用方法如下:

方法 说明
getmessage() 返回exception对象的异常信息字符串。
getLocalizedMessage() 返回本地化的异常错误。
toString() 返回关于异常错误的简单信息描述。
fillInStackTrace() 重写异常错误的栈行轨迹。

示例:使用exception对象获取异常信息。

(1)创建index.jsp文件,在该文件中,首先在page指令中定义errorPage属性值为error.jsp,即指定显示异常信息的页面。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" errorPage="error.jsp" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>使用exception对象获取异常信息</title>
</head>
<body>
<%
	request.setAttribute("price", "12.5元");                                    //保存单价到request范围内的变量price中
	float price = Float.parseFloat(request.getAttribute("price").toString());  //获取单价,并转换为float类型
%>
</body>
</html>

(2)编写error.jsp文件,将该页面的page指令的 isErrorPage属性值设置为true,并且输出异常信息。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" isErrorPage="true" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>错误提示页面</title>
</head>
<body>
错误提示为:<%= exception.getMessage() %>
</body>
</html>

执行结果:

错误提示为:For input string: "12.5元"

相关阅读

华为大数据云对象存储服务

毫无疑问,云是数据中心的未来,随着数据中心以及物联网和移动设备的快速发展,我们已经来到一个信息爆炸的时代,据IDC报告,当下数据以每

java json对象和json数组对象的处理

在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML、JSON等,JSON作为一个轻量级的数据格式比xml效率要高,XML需要很多的

CreateMutex创建互斥内核对象

http://blog.sina.com.cn/s/blog_149e9d2ec0102wyr0.html在编程中我们常使用程序创建一个互斥的内核对象,目的就是为了让这个程序

Java对象序列化为什么要使用SerialversionUID

1、首先谈谈为什么要序列化对象 - 把对象转换为字节序列的过程称为对象的序列化。 - 把字节序列恢复为对象的过程称为对

遇到问题:HTTP Status 404 - /Demo6/servlet/info.jsp

如若返回页或者重定向页面,登录页相同文件夹下,即会产生404此问题。 新建个文件夹servlet把返回页或者重定向页面放在这里面因为访

分享到:

栏目导航

推荐阅读

热门阅读