当前位置:网站首页>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
![]()
边栏推荐
- SAP ABAP dialog programming tutorial: module pool in -09
- [C language] deeply analyze the relationship between pointer and array
- nio服务多线程版本
- 【C语言】深度剖析指针和数组的关系
- What is the difference between "img" and "ALT" in the interview question
- C语言贪吃蛇
- 什么是RESTful,REST api设计时应该遵守什么样的规则?
- SAP ABAP 中 OpenSQL和Native SQL-05 本教程的目的不是教您 SQL 或数据库概念
- LeetCode_回溯_动态规划_中等_131.分割回文串
- Reddit对LaMDA模型的探讨:并非无状态,采用双重过程,相比它编辑维基百科的方式,有没有感情并不重要
猜你喜欢

什么是RESTful,REST api设计时应该遵守什么样的规则?

Make the code elegant (learn debugging + code style)

IDEA安装总结

Basic knowledge of audio and video | analysis of ANS noise suppression principle

【小程序项目开发-- 京东商城】uni-app开发之分包配置

SAP ABAP 对话框编程教程:中的模块池-09

Ironsource Luna offers a limited time discount for Apple search ads and enjoys 3 months of free service upon registration

CUMT学习日记——数字图像处理考试速成笔记

使用stream api替代sql

Static assertion static_ assert
随机推荐
SAP script tutorial: se71, se78, SCC1, vf03, so10-013
[C language] deeply analyze the relationship between pointer and array
什么是RESTful,REST api设计时应该遵守什么样的规则?
Prometheus监控之Consul监控 [consul-exporter]
nio服务多线程版本
'不敢去怀疑代码,又不得不怀疑代码'记一次网络请求超时分析
【小程序项目开发-- 京东商城】uni-app开发之配置tabBar & 窗口样式
nio使用可写事件处理一次性写不完情况
C语言贪吃蛇
User exit and customer exit in SAP ABAP -015
SAP ABAP data dictionary tutorial se11: tables, locked objects, views, and structures-03
SLAM十四讲之第6讲--非线性优化
【小程序项目开发-- 京东商城】uni-app开发之分包配置
论催收系统的任务调度设计
NiO file and folder operation examples
SAP ABAP 报告编程-08
What is SAP ABAP? Type, ABAP full form and meaning
Task scheduling design of collection system
Simple understanding of asynchronous IO
3. Classe abstraite (forme)