当前位置:网站首页>jsp学习之(三)--------- jsp隐式对象
jsp学习之(三)--------- jsp隐式对象
2022-06-22 15:22:00 【xiao_zhu_ting_feng】
1.0 概述
jsp隐式对象就是jsp容器提供的不用声明就可以在jsp页面的Java程序块和表达式部分直接使用的对象,也称为jsp内置对象
1.1简介
我们知道JSP中的内容就只有两种,模版数据和元素,元素就包括了指令,脚本,标签(行为),脚本会慢慢被标签全部代替,也就是说JSP中基本上不会嵌入Java代码,但是我们也知道JSP会转换为servlet,
在Servlet中,输出数据时,都需要通过response.getWrite();但是在JSP中,直接使用out对象进行输出,为什么呢?这就是因为out为JSP的一个隐藏对象,JSP中内置了9个隐藏对象,使得JSP比Servlet使用起来更简单,更方便。
1.2分类
隐式对象所属接口一览表

按照作用分

2.0输入输出对象(out,request,response)
2.1 out对象

- request对象
常用方法如下

request对象应用实例

运行效果如图:

request.setCharacterEncodiong,request.setAttribute,request.getAttribute方法的应用

运行效果如下:

2.3 response对象
response对象提供的方法

response应用实例(实现页面的刷新)

实现效果如下

sendRedirect实现页面的重定向


实现效果如下

我们可以看到页面由responsDemo02跳转到了responseDemo02_01
cookie实现客户端用户信息的保存
- login.jsp 用户登录界面


实现效果如下图所示

- cookieSave.jsp (处理cookie值,,并添加超链接跳转到另外一个页面查看登录页面信息)


实现效果如下图所示

- cookieQuer.jsp(显示cookie保存的用户名密码信息)


实现效果如下图所示
选择保存密码

选择不保存密码

3.0 作用域对象(session对象,application对象,pageContext对象)
3.1 session对象
session对象是由服务器自动创建与用户请求相关的对象。服务器会为每一个用户创建一个session对象用来保存用户信息,跟踪用户操作。该对象内部使用Map类来保存数据,因此它的数据类型是key-value形式。对应javax.servlet.http.HttpSession.class对象。
服务器为不同的浏览器在内存中创建用于保存数据的对象叫seesion。并将这个对象的唯一身份认证SessionId(存放在cookie中)返回给浏览器,浏览器将这个SessionId保存,当浏览器向服务器再次发送请求的时候,连同这个cookie一起发送过去,由此找到对应的session。
session对象提供的方法
方法名 | 功能介绍 |
long getCreateTime() | 获取session对象建立的时间;返回的是从1970年1月1日到建立时间的毫秒数 |
String getId() | 获取当前session对象的ID号,这个ID是唯一的,用来表示每一个登录到IE浏览器的用户;当刷新浏览器时,这个值是不变的;但是当关闭当前浏览器再重新打开一个浏览器时,这个值就会改变 |
Enumeration getAttributeNames() | 获取session对象存储的所有值的名字,返回的是一个Enumeration的实例 |
void removeAttribute() | 删除session对象中名字为name的存储值 |
void Invalidate() | 中断当前的session对象 |
Boolean isNew() | 判断当前session对象是否是一个新创建的session对象 |
void setMaxInactiveInterval(int interval) | 用来指定时间,以秒为单位,servlet容器将会再这段时间保存会话有效 |
int getMaxInactiveInterval() | 返回最大时间间隔,以秒为单位,serlet容器将会在这段时间内保存会话打开 |
Session对象实例
login.jsp


loginSuccess.jsp


五秒之后刷新界面(会话有效期为5s,5s之后页面信息自动销毁)

3.2 application对象
该对象主要用于多个jsp页面或者servlet之间共享变量,负责提供应用程序在服务器中运行是的一些全局信息

Application对象方法运用

运行结果如下,在刷新之后数目会增加


3.3 pageContext对象(该对象比较重要)
PageContext对象是jsp页面本身的上下文,它的作用范围是在同一页面使用它可以访问页面作用域中定义的所有隐式对象,pageContext自身还是一个域对象,可用来保存数据,通过pageContext域对象还可以操作另外三个作用域(Request,Session,ServletContext)
pageContext常用方法
这个功能就比较强大了,基本上什么他都有,因为是它是JSP页面的管理者(上下文),所以JSP中的内置对象呀,它统统能够获得,下面介绍它的api:
1)获得其它八大内置对象 getXxx()
在普通类中可以通过PageContext获取其他JSP隐式对象。自定义标签时就使用。
pageContext.getOut(); //获得out对象
pageContext.getApplication(); //获得application对象
等等....
2)对作用域的属性进行操作(四大作用域)
对默认作用域的属性进行操作。page
Object getAttribute(String name); //获得page作用域数据
void setAttribute(String name,Object o); //给page作用域设置内容
void removeAttribute(String name); //给page作用域移除内容
3)对指定作用域的属性进行操作
Object getAttribute(String name,int Scope); //获得指定作用域中的数据
void setAttribute(String name,Object o,int Scope); //给指定作用域设置内容
void removeAttribute(String name,int Scope); // 移除指定作用域的内容(page/request/session/application)
4)提供作用域常量
PageContext.PAGE_SCOPE page
PageContext.REQUEST_SCOPE request
PageContext.SESSION_SCOPE response
PageContext.APPLICATION_SCOPE application
page中最厉害的方法是:
findAttribute(String name); //自动从page request session application依次查找,找到了就取值,结束查找。

在2.jsp中

pageContext对象方法应用
1.与request对象作用域比较
pageContextDame01.jsp

pageContext01_01.jsp

运行效果如图

结果分析:pageContext对象保存的属性只在当前页面有限,页面跳转后为空,request对象在当前request请求范围内有效。
- 与session,application对象作用域比较

结果展示



结果分析:session对象(作用范围为一段用户持续和服务器所连接的时间),application对象(从服务器开始到关闭)比pageContext(只适用于当前页面)生命周期要长,而application生命周期最长。

类型:ServletConfig
能够获取servlet的初始化参数,获取servletContext对象,获取servletName。
这个我在servlet中详细的讲解了,可以去查看!
包含了异常的信息
使用它,必须结合page指令中的isErrorPage属性和errorPage属性。
exception.jsp 抛异常的一个NullPointException,并且跳转到error.jsp错误显示页面 errorPage属性的意思是如果发生未捕捉到的异常,将会跳转到error.jsp页面
举例:

error.jsp isErrorPage属性说明该页面是一个错误显示页面,则可以使用exception对象

访问:访问http://localhost:8080/Web_Jsp/exception.jsp
![]()
边栏推荐
- User exit and customer exit in SAP ABAP -015
- 用递归法求Fibonacci数列第n项的值
- 5. reading and writing of documents (students)
- 【微信小程序封装底部弹出框】一
- Implementation classes with similar execution logic use the template pattern
- Consumption monitoring of Prometheus monitoring [consult exporter]
- 机器学习笔记 - HaGRID—手势识别图像数据集简介
- 如何为政企移动办公加上一道“安全锁”?
- 浙江创投圈的“半壁江山”,还得是国资
- 异步IO的简单理解
猜你喜欢

wallys/WiFi6 MiniPCIe Module 2T2R 2×2.4GHz 2x5GHz

Conversion between numeric types and strings

ABAP query tutorial in sap: sq01, sq02, sq03-017

【C语言】库函数qsort的使用

JS获取数据类型方法总结

SAP ABAP sub screen tutorial: call sub screen -010 in SAP

SAP web service cannot log in to SOA management page with soamanager

什么是 SAP ABAP? 类型、ABAP 完整形式和含义

实现一个Container全局组件步骤(给还不会使用组件的新手一个思路,大佬绕道)

Pod type
随机推荐
二叉树练习第二弹
SAP ABAP report programming-08
预约打新债到底安不安全呀?是不是靠谱的?
全球首款AR隐形眼镜,元宇宙入口这次真的打开了?
Add a millennial sign to a number (amount in millennia)
Implementation classes with similar execution logic use the template pattern
Linux安装mysql
Ironsource Luna offers a limited time discount for Apple search ads and enjoys 3 months of free service upon registration
让代码优雅起来(学会调试+代码风格)
Basic knowledge of audio and video | analysis of ANS noise suppression principle
Runtime -- explore the nature of classes, objects, and classifications
机器学习笔记 - HaGRID—手势识别图像数据集简介
【C语言】库函数qsort的使用
Static assertion static_ assert
What is the difference between "img" and "ALT" in the interview question
变量
CUMT study diary - quick notes of digital image processing examination
6.gui (graphics, filling)
安全信得过!天翼云数据安全管理平台通过评测
Uniapp wechat applet obtains page QR code (with parameters)