1.JSP隐式对象

JSP隐式对象(内置对象)是JSP事先创建好的一组对象,不使用new关键字就可以直接使用。

所有JSP页面均可使用(只要你是JSP页面,就可以使用JSP九大内置对象)

只有在JSP表达式(<%=%>)或JSP脚本(<%%>)中才可使用

JSP九大内置对象:
资源分配图
四个作用域:
在这里插入图片描述


1.1 out对象

其中的out对象与我们之前用过的PrintWriter功能非常相似,可以直接向客户端发送文本。不过两者还是有些区别的,我们先看下图:

资源分配图

我们可以看到,JspWriter的缓冲区和PrintWriter(通过response.getWriter获取的)的缓冲区是相互独立的,JspWriter缓冲区的内容在flush之后(如果为手动提交,页面最后会自动提交)才会提交到PrintWriter的缓冲区内。我们看如下例子:

<% 
		out.print("我是第一行打印的!<br />");
		//out.flush();
		response.getWriter().println("我是第二行打印的!<br />");
%>

页面运行结果如下,可以看到,out对象输出的内容反而在后,这是因为其在页面结束时才将JspWriter缓冲区的内容提交到PrintWriter的缓冲区内,当把上面out.flush()取消注释后,我们就可以得到和我们预计顺序相同的结果。

资源分配图


1.2 request对象

request 对象是javax.servlet.httpServletRequest类型的对象。 该对象代表了客户端的请求信息,主要用于接受通过HTTP协议传送到服务器的数据。(包括头信息、系统信息、请求方式以及请求参数等)。request对象的作用域为一次请求

使用方法:

参考我的博客:2.【HttpServletRequest类】、【HttpServletResponce类】常用方法总结
在这里插入图片描述



1.3 response对象

response 代表的是对客户端的响应,主要是将JSP容器处理过的对象传回到客户端。response对象也具有作用域,它只在JSP页面内有效

使用方法:

参考我的博客:2.【HttpServletRequest类】、【HttpServletResponce类】常用方法总结
在这里插入图片描述



1.4 config对象

config是对象是javax.servlet.ServletConfig接口的实例化对象,主要功能是取得一些初始化的配置信息

通过pageConext对象的 getServletConfig() 方法可以获取一个config对象。

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


1.5 session对象

session对象是javax.servlet.http.HttpSession的一个实例

参考我的博客:4. 【Session、HttpSession类的API】+ Cookie与Session的区别与联系
在这里插入图片描述



1.6 application对象(ServletContext)

application对象是生成的Servlet的ServletContext对象的直接包装,实际上是javax.servlet.ServletContext对象的一个实例。

作用域:当前服务;只要服务不重启,那么作用域一直存在

application对象实现了用户间数据的共享,可存放全局变量。application对象开始于web服务器(tomcat)的启动,结束于web服务器(tomcat)的关闭。

常用方法:

//获取ServletContext
ServletContext context = this.getServletContext();

//往application对象中设置一个属性,请注意,如果多次调用该方法,并且使用相同的name,那么会覆盖上一次的值。
void setAttribute(String name,Object value); 

//从application对象中通过属性名取出对应属性值,如果指定属性名不存在则返回null
Object getAttribute(String name); 

//从application对象中移除指定属性名的属性,如果指定属性名不存在,什么也不做
Void removeAttribute(String name); 

参考我的博客:2. Servlet的介绍+【ServletContext类】的常用方法总结



1.7 page对象

page对象是对该页面实例的实际引用。可以认为它是表示整个JSP页面的对象。

page对象是this对象的直接同义词。


1.8 pageContext对象

pageContext对象是javax.servlet.jsp.PageContext对象的一个实例。pageContext对象用于表示整个JSP页面。

PageContext对象也是一个内置对象,在jsp中会默认创建一个实例对象,名为pageContext,表示当前JSP页面的运行环境,并提供获取其他隐式对象的方法,方法列表如下:

资源分配图

不过这些方法用处不大,因为本身内置对象在JSP页面中就默认创建的,并可直接在JSP页面中使用,不过如果需要传参的话,则可只传递一个pageContextd对象即可,然后可以通过其获取其他隐式对象。

当然,PageContext作为域对象,其也提供了一些操作属性的方法,主要如下:

资源分配图

其中的scope为作用域大小,主要有如下定义:

可以看到,PageContext作为压轴出场,果然没让让我们失望,其可以提供粒度可控的属性绑定,PageContext可以说是其他三个域对象的总和,并且可以提供范围更小的PAGE_SCOPE。



1.9 exception对象

在JSP页面中,因为也可使用Java代码,且设计之初,就承担重任,因此JSP页面中为了方便处理异常,就内置了exception对象来进行异常信息的处理

exception对象的使用需要配合page指令中的errorPage、isErrorPage来使用。

我们来看一个例子,我们创建两个jsp页面,分别命名为exception.jsp、error.jsp,代码如下( 注意两个页面中第一行的page指令):

<!-- exception.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 Object Test</title>
</head>
<body>
	<%
		int a = 3;
		int b = 0;
	%>
	<!-- 除数为0,抛出异常  -->
	<h1>输出结果为:<%= (a / b) %></h1>
</body>
</html>
<!-- error.jsp -->
<%@ 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>
	<h1>处理出错,错误信息为: <%= exception.getMessage() %></h1>
</body>
</html>

浏览器中执行exception.jsp,执行结果如下如所示:
资源分配图

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐