JSP的内置对象详解

article/2025/9/29 13:07:39

JSP内置对象


文章目录

  • JSP内置对象
  • 前言
  • 一、out对象
    • 1.原理
    • 2. 向客户端输出数据
  • 二、page对象
    • 1.范围
  • 三、pageContext 对象
    • 1.获取内置对象
    • 2.存储数据
  • 四、request对象
    • 1.创建及获取请求
    • 2.范围
  • 五、response 对象
    • 1.重定向网页
    • 2.处理HTTP文件头
  • 六、session对象
    • 1.创建及获取客户的会话
    • 2.从会话中移动指定的绑定对象
    • 3.范围
  • 七、application对象
    • 1.创建及获取应用程序的属性
    • 2.范围
  • 总结


前言

什么是域对象:
在JSP页面中,有一些对象需要频繁使用,如果每次都重新创建这些对象则会十分麻烦。为了简化Web应用程序的开发,JSP规范中提供了9个隐式(内置对象),它们是JSP默认创建的,可以直接在JSP页面中使用,这9个内置对象的名称、类型、功能、范围如下图所示哦。本篇文章主要介绍前7个。

在这里插入图片描述

一、out对象

在JSP页面中,经常需要向客户端发送文本内容,这时可以使用out对象来实现。

代码如下(示例):

  out.print("大家好呀!!!");

1.原理

out对象的类型为JspWriter,相当于一种带缓存功能的PrintWriter。下面这张图可以描述JSP页面的out对象与Servlet引擎提供的缓冲区之间的工作关系,具体如图所示。
1222222
从图中可以看出,在JSP页面中,通过out内置对象写入数据相当于将数据插入到JspWriter对象的缓冲区中,只有调用了ServletResponse.getWriter()方法,缓冲区中的数据才能真正写入到Servlet引擎所提供的缓冲区。为了验证我所说的是否正确,接下来通过一个具体的案例来演示。

代码如下(示例):

  out.println("你好1"+"<br>");response.getWriter().println("我在后面");

结果为下图 ,可见后者比前者先运行。
在这里插入图片描述

2. 向客户端输出数据

out对象一个最基本的应用就是向客户端浏览器输出信息。out对象可以输出各种数据类型的数据,在输出非字符串类型的数据时,会自动转换为字符串进行输出。out对象提供了print()和println()两种向页面中输出信息的方法,下面分别进行介绍。
1.print()方法
print()方法用于向客户端浏览器输出信息。通过该方法向客户端浏览器输出信息与使用JSP表达式输出信息相同。
通过两种方式实现向客户端浏览器输出文字“啊对对对!”。代码如下:

    <%out.print("啊对对对!");%><%="啊对对对!" %>

2.println()方法
println()方法也是用于向客户端浏览器输出信息,与print()方法不同的是,该方法在输出内容后,还输出一个换行符。
通过println()方法向页面中输出数字666666的代码如下:

    <%out.println(666666);out.println("燕子不要走!");%>

说明
在使用print()方法和println()方法在页面中输出信息时,并不能很好地区分出两者的区别,因为在使用println()方法向页面中输出的换行符显示在页面中时,并不能看到其后面的文字真的换行了,例如上面的两行代码在运行后,将显示如图所示的效果。
在这里插入图片描述

二、page对象

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

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

代码如下(示例):

<%!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>

在这里插入图片描述

1.范围

本页面取得,服务器跳转后无效。所设置的属性仅在当前页面内有效。

三、pageContext 对象

1.获取内置对象

在JSP页面中,使用pageContext对象可以获取JSP的其他8个内置对象。它代表当前JSP页面的运行环境,并提供了一系列用于获取其他内置对象的方法。pageContext对象获取内置对象的方法如下表。

方法功能
JspWriter getOut()用于获取out内置对象
Object getPage()用于获取page内置对象
ServletRequest getRequest()用于获取request内置对象
ServleResponse getResponse()用于获取response内置对象
HttpSession getSession()用于获取session内置对象
Exception getException()用于获取exception内置对象
ServletConfig getServletConfig()用于获取appliction内置对象

2.存储数据

这样,当传递一个pageContext()对象后,就可以通过这些方法轻松的获取到其他内置对象。你以为就只有这些功能吗,no!pageContext()对象还提供了存储数据的功能。pageContext()对象存储数据是通过操作属性来实现的,下表是其一系列方法。

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

四、request对象

request对象封装了由客户端生成的HTTP请求的所有细节,主要包括HTTP头信息、系统信息、请求方式和请求参数等。通过request对象提供的相应方法可以处理客户端浏览器提交的HTTP请求的各项参数。再进行请求转发时,需要把一些数据传递到转发后的页面进行处理。这时就需要使用request对象的setAttribute()方法将数据保存到request范围内的变量中。

1.创建及获取请求

request对象的setAttribute()方法的语法格式如下:

request.setAttribute(String name,Object object);

参数说明:
name:表示变量名,为String类型,在转发后的页面取数据时,就是通过这个变量名来获取数据的。
object:用于指定需要在request范围内传递的数据,为Object类型。
在将数据保存到request范围内的变量中后,可以通过request对象的getAttribute()方法获取该变量的值,具体的语法格式如下:

request.getAttribute(String name);

2.范围

服务器跳转有效,客户端跳转无效。如果是客户端跳转,就相当于是发出了两次请求,那么第一次请求就将不复存在了;如果希望不管是客户端还是服务器跳转,都能保存的话,就需要继续扩大范围。
所设置的属性仅在一次请求的范围内有效。

五、response 对象

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

1.重定向网页

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

    response.sendRedirect(String path);

参数说明
path:用于指定目标路径,可以是相对路径,也可以是不同主机的其他URL地址。

代码如下(示例):

response.sendRedirect("login.jsp");
//重定向到login.jsp页面
response.sendRedirect("https://www.baidu.com/");
//重定向到百度页面

2.处理HTTP文件头

1.设置页面自动刷新
通过设置HTTP头还可以实现页面的自动刷新。
例使网页每隔10秒自动刷新一次。

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

2.定时跳转网页
通过设置HTTP头还可以实现定时跳转网页的功能。
例使网页10秒后跳转到指定的网页。

<%
reponse.setHeader("refresh","10,URL=login.jsp");
%>

六、session对象

session在网络中被称为会话。实际上,一次会话的过程也可以理解为一个打电话的过程。通话从拿起电话或手机拨号开始,一直到挂断电话结束,在这个过程中,可以与对方聊很多话题,甚至重复的话题。一个会话也是这样,可以重复访问相同的Web页。由于HTTP协议是一种无状态协议,也就是当一个客户向服务器发出请求,服务器接收请求,并返回响应后,该连接就结束了,而服务器并不保存相关的信息。为了弥补这一缺点,HTTP协议提供了session。通过session可以在应用程序的Web页面间进行跳转时,保存用户的状态,使整个用户会话一直存在下去,直到关闭浏览器。

1.创建及获取客户的会话

通过session对象可以存储或读取客户相关的信息,如用户名或购物信息等,这可以通过session对象的setAttribute()方法和getAttribute()方法实现。下面分别进行介绍。

1.setAttribute()方法
该方法用于将信息保存在session范围内,其语法格式如下:

    session.setAttribute(String name, Object obj);

参数说明:
name:用于指定作用域在session范围内的变量名。
obj:保存在session范围内的对象。
例将用户名“张三”保存到session范围内的username变量中,可以使用下面的代码:

    session.setAttribute("username", "张三");

2.getAttribute()方法
该方法用于获取保存在session范围内的信息,其语法格式如下:

    getAtttibute(String name)

参数说明:
name:指定保存在session范围内的关键字。
读取保存在session范围内的username变量的值。代码如下:

    session.getAttribute("username");

2.从会话中移动指定的绑定对象

对于存储在session会话中的对象,如果想将其从session会话中移除,可以使用session对象的removeAttribute()方法,该方法的语法格式如下:

    removeAttribute(String name)

参数说明:
name:用于指定作用域在session范围内的变量名。一定要保证该变量在session范围内有效,否则将抛出异常。
将保存在session会话中的username对象移除的代码如下:

    <%session.removeAttribute("username");%>

3.范围

无论客户端还是服务端都可以取得,但是现在重新开启一个新的浏览器,则无法取得之前设置的session了,因为每一个session值保存在当前浏览器中,并在相关的页面取得,对于服务器而言,每一个连接到它的客户端都是一个session,如果想要让属性设置一次,不管是否是新的浏览器打开都可以,则使用application。
所设置的属性仅在浏览器与服务器进行一次会话的范围内有效,当和服务器断开连接后,属性就会消失。

七、application对象

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

1.创建及获取应用程序的属性

与session对象相同,也可以在application对象中设置属性。与session对象不同的是,session只是在当前客户的会话范围内有效,当超过保存时间,session对象就被收回;而application对象在整个应用区域中都有效。application对象管理应用程序环境属性的方法分别介绍如下。

1.getAttributeNames()
获得所有application对象使用的属性名。
2.getAttribute(String name):从application对象中获取指定对象名。
3.setAttribute(String key, Object obj):使用指定名称和指定对象在application对象中进行关联。
4.removeAttribute(String name):从application对象中去掉指定名称的属性。

2.范围

所有的application属性直接保存在服务器上,所有的用户(每一个session)都可以直接访问取得,只要是通过appliction设置的属性,则所有的session都可以取得,表示公共的内容,但是如果此时服务器重启了,则无法取得了,因为关闭服务器后,所有的属性都消失了,所以需要重新设置。
所设置的属性在整个Web应用中都有效,直到服务器停止后才失效。

总结

大家好啊

以上就是今天要讲的内容,本文仅仅简单介绍了内置对象的定义使用,希望能与大家一起努力加油呀~


http://chatgpt.dhexx.cn/article/lHufBkFa.shtml

相关文章

JSP常用内置对象概述

1、概述 JSP提供了9个预设的对象&#xff0c;我们将其称为内置对象。这些对象内置在JSP网页环境之下&#xff0c;因此用户不需要引用这些对象所属的包&#xff0c;便可以直接在JSP网页中使用这些对象。 如图&#xff1a; (1 ) request与response对象。JSP网页能够具备与用户…

JSP的九种内置对象

JSP有九个内置对象&#xff08;又叫隐含对象&#xff09;&#xff0c;不需要预先声明就可以在脚本代码和表达式中随意使用&#xff0c;即不需要实例化&#xff0c;直接使用其方法即可。 pageppagecontentoutconfigexceptionrequestreponsesessionapplication 作用域&#xff…

JSP九大内置对象

JSP提供了由容器实现和管理的内置对象&#xff0c;也可以称之为隐含对象&#xff0c;由于JSP使用Java作为脚本语言&#xff0c;所以JSP将具有强大的对象处理能力&#xff0c;并且可以动态创建Web页面内容。但Java语法在使用一个对象前&#xff0c;需要先实例化这个对象&#xf…

【JSP内置对象】之9大内置对象(JavaWeb必背必掌握)

JSP内置对象 理解9大内置对象分类1.request&#xff08;请求对象&#xff09;2.response(响应对象)3.session(会话对象)4.application(应用程序对象)5.page(页面对象)6.pageContext(页面上下文对象)7.out(输出对象)8.config(配置对象)9.exception(异常对象) 理解 1.JavaEE规范…

SQL INSERT 语句

INSERT 语句是向表中添加新行&#xff0c;&#xff08;如图所示的是INSERT 语句的最基本形式&#xff09; 1、首先&#xff0c;是要指定要插入的表的名称&#xff08;例如图中的yuangong&#xff09; 2、其次&#xff0c;指定要插入的数据&#xff0c;一个或多个列的列表。必须…

pycharm sql语句插入

一. 二. 开控制台 三. 书写sql语句&#xff0c;点击绿色三角运行

python执行sql 语句

python执行sql 语句 数据etl 过程中会涉及到调度&#xff0c;也就是每天要定时执行的任务&#xff0c;这些任务执行过程中其实是通过底层的脚本代码来进行数据的清洗转换等处理的。而脚本代码中肯定会涉及到调用sql 语句的情况&#xff0c;最近项目正好用到python 脚本调用sql…

通过Navicat 写SQL语句

具体步骤&#xff1a; 1、首先打开要写SQL语句的数据库连接 2、然后点击菜单中的查询&#xff08;query&#xff09; 3、然后点击新建查询 4、然后输入SQL语句&#xff0c;点击运行 &#xff0c;查询到的数据在底部

mysql修改数据sql语句_sql语句修改数据

sql语句修改数据 SQL 中,可以使用 UPDATE 语句来修改、更新一个或多个表的数据。 语法格式为:UPDATE SET 字段 1=值 1 [,字段 2=值 2… ] [WHERE 子句 ] [ORDER BY 子句] [LIMIT 子句] 语法说明如下::用于指定要更新的表名称。 SET 子句:用于指定表中要修改的列名及其列值…

SQL语句常用命令

一、表设计 1、创建表 create table 表名 (字段 字段类型);2、复制表结构及数据 create table 新表 as select * from 旧表3、复制表结构不需要数据 create table 新表 as select * from 旧表 where 2<>24、查看表结构 desc 表名5、复制表数据 insert into 目标表 s…

【180609】经典SQL语句大全(CHM)

收集我们在平时使用SQL时的一些语法语句汇集&#xff0c;比如创建、备份、删除数据库的SQL脚本&#xff0c;这些当然是比较简了&#xff0c;还有复杂点的像备份、创建索引、复合SQL语句、创建视图、高级运算查询、EXCEPT 运算符、INTERSECT 运算符、使用外连接、SQL分组、复制或…

SQL语句大全实例

SQL语句实例 表操作 例 1 对于表的教学管理数据库中的表 STUDENTS &#xff0c;可以定义如下&#xff1a; CREATE TABLE STUDENTS (SNO NUMERIC (6, 0) NOT NULL SNAME CHAR (8) NOT NULL AGE NUMERIC(3,0) SEX CHAR(2) BPLACE CHAR(20) PRIMARY KEY(SNO…

数据库常用的sql语句大全--sql

前言 本片博客使用mysql数据库进行数据操作,使用Navicat for mysql 这个IDE进行可视化操作。每个SQL语句都是亲身实验验证的,并且经过自己的思考的。能够保证sql语句的可运行性。 sql语句的命令不区分大小写,但储存的数据是区分大小写的。在这里我们统一使用英文小写进行命…

SQL常用语句大全

我们在进行开发工作时&#xff0c;对数据库的操作是必不可少的&#xff0c;熟练掌握SQL语句可以让我们对数据库的数据处理变得非常简单&#xff0c;所以学习SQL语句是非常有必要的&#xff0c;下面汇总了一些常用的SQL语句 SQL语句的类型 DDL(Data Definition Language)数据定…

EXPLAIN 命令详解

在工作中&#xff0c;我们用于捕捉性能问题最常用的就是打开慢查询&#xff0c;定位执行效率差的SQL&#xff0c;那么当我们定位到一个SQL以后还不算完事&#xff0c;我们还需要知道该SQL的执行计划&#xff0c;比如是全表扫描&#xff0c;还是索引扫描&#xff0c;这些都需要通…

explain用法和结果的含义

explain select * from user explain extended select * from user idSELECT识别符。这是SELECT的查询序列号select_type SELECT类型,可以为以下任何一种: SIMPLE:简单SELECT(不使用UNION或子查询)PRIMARY:最外面的SELECTUNION:UNION中的第二个或后面的SELECT语句DEPENDENT UN…

SQL优化-explain的用法(实例解析)

前面写了两篇博客&#xff0c;关于单表和多表的优化&#xff0c;这两篇博客的基础其实就是explain&#xff0c;explain是必须掌握的知识点&#xff0c;我曾尝试过死记硬背&#xff0c;但效果甚微&#xff0c;还是实践来的实在。耗费一周左右时间&#xff0c;每晚花两小时&#…

MySQL中EXPLAIN详解

EXPLAIN作为MySQL的性能分析神器&#xff0c;读懂其结果是很有必要的&#xff0c;然而我在各种搜索引擎上竟然找不到特别完整的解读。都是只有重点&#xff0c;没有细节&#xff08;例如type的取值不全、Extra缺乏完整的介绍等&#xff09;。 mysql网站 文章目录 EXPLAIN使用用…

MySql的Explain用法

MySql的Explain用法 explain执行计划 explain执行计划 使用EXPLAIN关键字可以模拟优化器执行SQL查询语句&#xff0c;从而知道MySQL是如何处理你的SQL语句的。分析你的查询语句或是表结构的性能瓶颈。 ➤ 通过EXPLAIN&#xff0c;我们可以分析出以下结果&#xff1a; 表的读…

MySQL Explain用法及各字段详解

Explain工具介绍 使用 Explain 关键字可以模拟 MySQL 优化器执行 SQL 查询语句&#xff0c;并分析出查询语句的相关执行过程。 使用方法是直接在 select 语句前&#xff0c;加上关键字 explain&#xff0c;然后执行&#xff0c;就能获取一些优化器执行该 SQL 的信息。使用方法…