JSP隐式对象——out对象、pageContext对象、exception对象

JSP隐式对象的概述

在JSP页面中,有一些对象需要频繁使用,如果每次都重新创建这些对象则会非常麻烦。为了简化Web应用程序的开发,JSP2.0规范中提供了9个隐式(内置)对象,它们是JSP默认创建的,可以直接在 JSP 页面中使用。这9个隐式对象的名称、类型和描述如表所示。

名称类型描述范围
outjavax.servlet.jsp.JspWriter用于输出页面page
requestjavax.servlet.http.HttpServletRequest得到用户信息request
responsejavax.servlet.http.HttpServletResponse服务器向客户端回应消息page
configjavax.servlet.ServletConfig服务器配置,可以取得初始化参数page
sessionjavax.servlet.http.HttpSession用来保存用户的信息session
applicationjavax.servlet.ServletContext所有用户的共享信息,与应用上下文有关,它代表当前web应用。application
pageJava.lang.Object指当前页面转换后的Servlet类的实例,代表当前被访问JSP页面的实例化page
pageContextjavax.servlet.jsp.PageContextJSP的页面容器提供对JSP页面所有对象以及命名空间的访问,是页面上下文对象page
exceptionjava.lang.Throwable表示JSP页面所发生的异常,在错误页中才起作用page

out对象

out对象是javax.servlet.jsp.JspWriter类的实例对象,它的作用与ServletResponse.getWriter()方法返回的PrintWriter对象非常相似,都是用来向客户端发送文本形式的实体内容。不同的是,out对象的类型为JspWriter,它相当于一种带缓存功能的PrintWriter
在这里插入图片描述
在 JSP 页面中,通过 out 隐式对象写入数据相当于将数据插入到JspWriter 对象的缓冲区中,只有调用了 ServletResponse.getWriter()方法,缓冲区中的数据才能真正写入到Servlet引擎所提供的缓冲区中

out对象使用

创建一个jsp页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>out</title>
</head>
<body>
<% 
	out.println("第一行<br>");
	response.getWriter().println("第二行<br>");
%>
<%--
	out.println通过print语句写入数据后直到整个jsp页面结束才会将其中的
	内容真正的写到Servlet缓冲区中,Servlet引擎按照缓冲区的数据存放顺序输出
	要将out对象直接写入Servlet引擎可以用page指令中的buffer属性实现 设置为“0kb”
--%>
</body>
</html>

运行结果
在这里插入图片描述
从图可以看出,尽管out.println();语句位于response.getWriter().println();语句之前,但它的输出内容却在后面。由此可以说明
out 对象通过 print 语句写入数据后,直到整个JSP页面结束,out对象中输入缓冲区的数据(即first line)才真正写入到Serlvet引擎提供的缓冲区中。而response.getWriter().println();语句则是直接把内容(即第二行)写入Servlet引擎提供的缓冲区中,Servlet引擎按照缓冲区中的数据存放顺序输出内容。

设置page对象的**buffer=“0kb”**属性,将out对象的数据直接写入Servlet引擎提供的缓冲区中
修改上面代码:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" buffer="0kb"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>out</title>
</head>
<body>
<% 
	out.println("第一行<br>");
	response.getWriter().println("第二行<br>");
%>
</body>
</html>

运行结果:
在这里插入图片描述
由此可见,out对象中的数据直接写入了Servlet引擎提供的缓冲区中。此外,当写入到out对象中的内容充满了out对象的缓冲区时,out对象中输入缓冲区的数据也会真正写入到Servlet引擎提供的缓冲区中。

pageContext对象

JSP页面中,**使用pageContext对象可以获取JSP的其他8个隐式对象。**pageContext对象是javax.servlet.jsp.PageContext类的实例对象,它代表当前JSP页面的运行环境,并提供了一系列用于获取其他隐式对象的方法。

pageContext获取隐式对象的方法

方法名功能描述
JspWriter getOut()用于获取out隐式对象
Object getPage()用于获取page隐式对象
ServletRequest getRequest()用于获取request隐式对象
ServletResponse getResponse()用于获取response隐式对象
HttpSession getSession()用于获取session隐式对象
Exception getException()用于获取exception隐式对象
ServletConfig getServletConfig()用于获取config隐式对象
ServletContext getServletContext()用于获取application隐式对象

pageContext操作属性的相关方法

方法名称功能描述
void setAttribute(String name,Object value,int scope)用于设置pageContext对象的属性
Object getAttribute(String name,int scope)用于获取pageContext对象的属性
void removeAttribute(String name,int scope)删除指定范围内名称为name的属性
void removeAttribute(String name)删除所有范围内名称为name的属性
Object findAttribute(String name)从4个域对象中查找名称为name的属性

其中,参数name指定的是属性名称,参数scope指定的是属性的作用范围。pageContext对象的作用范围有4个值,具体如下。
• pageContext.PAGE_SCOPE:表示页面范围
• pageContext.REQUEST_SCOPE:表示请求范围
• pageContext.SESSION_SCOPE:表示会话范围
• pageContext.APPLICATION_SCOPE:表示Web应用程序范围

需要注意的是,当使用 findAttribute()方法查找名称为 name 的属性时,会按照 page、request、session和application的顺序依次进行查找,如果找到,则返回属性的名称,否则返回nul

pageContext对象使用案例

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>pageContext</title>
</head>
<body>
<%
	//获取request对象
	HttpServletRequest req=(HttpServletRequest)pageContext.getRequest();
	
	//设置page范围内属性
	pageContext.setAttribute("str", "Java",pageContext.PAGE_SCOPE);
	//设置request范围内属性
	req.setAttribute("str", "Java Web");
	//获得的page范围属性
	String str1=(String)pageContext.getAttribute("str",pageContext.PAGE_SCOPE);
	
	//获得的request范围属性
	String str2=(String)pageContext.getAttribute("str",pageContext.REQUEST_SCOPE);
%>
<%="page 范围:"+str1 %>
<br>
<%="request 范围:"+str2 %>
<br>
</body>
</html>

运行结果:
在这里插入图片描述
在上述代码中,首先使用pageContext获取了request对象,并设置page范围内属性;然后使用获取的request对象设置了request范围内属性,接下来使用pageContext对象获得page和request范围内的相应属性,最后使用JSP表达式输出数据。

exception对象

JSP 页面中,经常需要处理一些异常信息,这时,可以通过 exception 对象来实现。exception对象是java.lang.Exception类的实例对象,它用于封装JSP中抛出的异常信息
需要注意的是,**exception 对象只有在错误处理页面才可以使用,即 page 指令中指定了属性

<%@ page isErrorPage="true"%>

的页面。接下来,通过一个案例来学习exception对象的使用

exception对象使用

创建用于产生错误的jsp页面
添加属性: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>
	<%
		int a=3;
		int b=0;
	%>
	输出结果为:
	<%=(a/b) %><!-- 此处会产生异常 -->
</body>
</html>

创建errpr.jsp,设置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>exception对象</title>
</head>
<body>
 <!-- 显示异常信息 -->
 <%=exception.getMessage() %>
 <br>
</body>
</html>

运行结果:
在这里插入图片描述
需要注意的是,IE浏览器如果不能够显示出结果并且报出500错误时,可以点击浏览器菜单栏中的【工具】(IE11可以点击右上角的齿轮图标)→【Internet 选项】→【高级】,将“显示友好错误HTTP错误信息”复选框中的“√”去掉,然后点击窗口的【确认】按钮并刷新页面即可。

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
JSPJava Server Pages)是一种用于开发 Web 应用程序的 Java 技术,它提供了一种用于创建动态 Web 页面的简单而强大的方法。在 JSP 中,有几个隐式对象,这些对象JSP 页面中可以直接使用,包括 request、response、exception 和 out 对象。这些对象作用如下: 1. request 对象:request 对象是 HttpServletRequest 类型的对象,代表客户端 HTTP 请求。它包含了客户端提交的所有请求参数和头信息,可以用来获取客户端传递的数据。在 JSP 页面中,可以通过 request 对象获取客户端提交的数据,并将数据传递给后台 Java 代码进行处理。 2. response 对象:response 对象是 HttpServletResponse 类型的对象,代表服务器 HTTP 响应。它包含了服务器响应客户端的所有信息,可以用来设置响应头信息、设置响应状态码、设置响应内容等。在 JSP 页面中,可以通过 response 对象设置响应信息,并将响应信息返回给客户端。 3. exception 对象exception 对象代表 JSP 页面中发生的异常信息。当 JSP 页面中发生异常时,容器会将异常信息封装到 exception 对象中,并将其传递给 JSP 页面。在 JSP 页面中,可以通过 exception 对象获取异常信息,并进行相应的处理。 4. out 对象:out 对象JspWriter 类型的对象,代表将要输出到客户端的数据流。在 JSP 页面中,可以通过 out 对象输出响应内容,如 HTML 标签、文本信息、数据等。 综上所述,JSP 中的 request、response、exception 和 out 对象JSP 页面中的隐式对象,它们分别代表客户端请求、服务器响应、异常信息和输出流,可以方便地操作客户端请求和服务器响应,实现动态 Web 页面的开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

心醉瑶瑾前

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值