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引擎提供的缓冲区之间的工作关系,具体如图所示。

从图中可以看出,在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应用中都有效,直到服务器停止后才失效。

总结

大家好啊

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

JSP的内置对象详解相关推荐

  1. html内置时间对象,JavaScript中的常用事件,以及内置对象详解

    原标题:JavaScript中的常用事件,以及内置对象详解 今天是刘小爱自学Java的第81天. 感谢你的观看,谢谢你. 话不多说,开始今天的学习: 学前端有一个非常权威的组织,也就是w3c,其有个专 ...

  2. JSP 9 大内置对象详解

    2019独角兽企业重金招聘Python工程师标准>>> 内置对象特点: 1.            由JSP规范提供,不用编写者实例化. 2.            通过Web容器实 ...

  3. JSP 九大内置对象详解

    内置对象特点: 1. 由JSP规范提供,不用编写者实例化: 2. 通过Web容器实现和管理: 3. 所有JSP页面均可使用: 4. 只有在脚本元素的表达式或代码段中才可使用(<%=使用内置对象% ...

  4. Helm 3 完整教程(五):Helm 内置对象详解

    推荐阅读 Helm3(K8S 资源对象管理工具)视频教程:https://edu.csdn.net/course/detail/32506 Helm3(K8S 资源对象管理工具)博客专栏:https: ...

  5. 序列内置方法详解(string/list/tuple)

    一.常用方法集合 1.1.string,字符串常用方法 以下举例是python2.7测试: 函数名称 作用 举例 str.capitalize() 字符串第一个字符如果是字母,则把字母替换为大写字母. ...

  6. python的装饰器迭代器与生成器_python3 装饰器、列表生成器、迭代器、内置方法详解等(第四周)...

    前言: 为什么要学习python3? 原因: 1.学习一门语言能力 2.通过该语言能力完成测试自动化以及独立完成自测框架知识 那么我要做什么呢? 1.每天花十个小时完成python3的学习 要在什么地 ...

  7. python3 内置函数详解

    内置函数详解 abs(x) 返回数字的绝对值,参数可以是整数或浮点数,如果参数是复数,则返回其大小. # 如果参数是复数,则返回其大小.>>> abs(-25) 25>> ...

  8. python列表的内置方法_Python内置方法详解

    1. 字符串内置方法详解 为何要有字符串?相对于元组.列表等,对于唯一类型的定义,字符串具有最简单的形式. 字符串往往以变量接收,变量名.可以查看所有的字符串的内置方法,如: 1> count: ...

  9. Python内置函数详解——总结篇

      引 言 国庆期间下定决心打算学习Python,于是下载安装了开发环境.然后问题就来了,怎么开始呢?纠结一番,还是从官方帮助文档开始吧.可是全是英文啊,英语渣怎么破?那就边翻译边看边实践着做吧(顺便 ...

最新文章

  1. 普渡大学计算机硕士申请条件,普渡大学计算机与信息技术理学硕士研究生申请要求及申请材料要求清单...
  2. 表白编程代码python_python抖音表白程序源代码
  3. Cython进阶--用Cython封装Callback函数
  4. CSS定义字体间距 字体行与行间距
  5. VS2012 使用条件断点和内存断点
  6. 问题(二)--算法相关
  7. PHP 实现文件下载实例
  8. java pkcs8_java中公钥,私钥,pkcs1格式,pkcs8格式互转
  9. linux打开dwg文件怎么打开方式,dwg文件扩展名,dwg文件怎么打开?
  10. 小学计算机组成的说课PPT,小学说课课件.ppt
  11. matlab aic sic,请教ADF检验时AIC准则和SIC准则不一致时怎么办?
  12. 【网络流24题】火星探险问题
  13. stm32F407控制器在驱动电机等执行机构时,ADS1256采集模块出现死机现象,问题待解决
  14. Git命令全解析-前端备忘录
  15. 计算机工程系的文化是什么,计算机工程系科技文化节.doc
  16. Unicode编码和Base64编码
  17. TCHAR char wchar_t 的区别
  18. Php字符拼出心形,canvas实现九宫格心形拼图的方法(附代码)-
  19. 红外发光二极管的接收方式
  20. Linux Centos7目录结构总结

热门文章

  1. 可以升了!Windows 10创意者更新变化全部在此
  2. 2019-2020 ICPC昆明站 爆炸记兼赛后总结(日记向)
  3. 小米笔记本设置默认f1-f12
  4. 告诉你如果对一个新产品进行测试
  5. 租房子时,请严重注意中介和代理的区别,本人的真实经历
  6. 灵活而奇特的C++语言特性——typedef aliases
  7. 基于Mybatis的sql动态查询和模糊查询的实现
  8. 全国计算机等级三级Linux应用与开发技术考试大纲(2021年版)
  9. Ubuntu系统查看内存信息
  10. python 实现数组反转