【Jsp】第七课 Jsp内置对象的学习和使用

article/2025/9/29 12:19:58

概念

什么是JSP内置对象?

} JSP 内置对象是 Web 容器创建的一组对象
} JSP 内置对象是可以直接在 JSP 页面使用的对象 ,无需使用“ new” 获取实例
} JSP 内置对象的名称是 JSP 的保留字
} 内置对象说白了就是别人创建好了的对象,我们直接用即可

九大内置对象

内置对象类型作用
out JspWriter用于向客户端、浏览器输出数据
requestHttpServletRequest来自客户端、浏览器的各种请求信息
responseHttpServletResponse服务器的响应信息
sessionHttpSession保存会话信息。实现同一用户的信息共享
exceptionThrowablejsp程序执行过程中发生的异常
pageServlet(this)指向了当前jsp程序本身
configServletConfig操作应用程序的配置信息
applicationServletContext不同用户之间的信息共享
pageContext PageContext提供了对jsp页面所有对象的访问

从上一篇文章的学习中,我们指定Jsp文件在运行时会被翻译成servlet,那么这里的内置对象其实就是在被翻译之后的servlet中所定义的,这里我们可以打开对应的运行在tomcat上的work文件夹中的项目查看。

1. out对象

从翻译后的代码中可以发现,out对象的作用基本和我们之前用在Servlet中的PrintWrite的用法一致,都是将字符串的内容发送给浏览器上显示。

 这里我们也创建一个jsp文件来练习一下:

<%@page import="java.util.Calendar"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- Jsp九大内置对象之一:out对象,对应的类名JspWriter -->
<!-- 判断当前是上午还是下午 -->
<% Calendar calendar=Calendar.getInstance();int AM_PM= calendar.get(Calendar.AM_PM);if(AM_PM==Calendar.AM){out.print("<p style='color:red;'>当前时间为上午</p>");}else if(AM_PM==Calendar.PM){out.print("<p style='color:green;'>当前时间为下午</p>");}
%>
</body>
</html>

2.request对象

该对象已在Servlet中做了详细讲解和介绍,这里就不再做过多的赘述,我们创建一个jsp文件来简单复习一下:

在浏览器访问该页面的地址后面拼接name和psd的数据发送给该页面。

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body><!-- request:用于接收浏览器发送过来的数据 --><%String name=request.getParameter("name");String psd=request.getParameter("psd");out.write("jsp接收到浏览器的数据为"+name+"---"+psd);//请求转发,携带数据跳转jsp页面//request对象也能存储数据,//并且也可以让多个servlet和jsp之间共享数据//但是必须要是请求转发跳转页面的方式才能共享数据request.setAttribute("a", "苹果");request.getRequestDispatcher("a.jsp").forward(request, response);%>
</body>
</html>

 再创建a.jsp文件用于接收该页面通过请求转发而得到的数据:

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body><%String a=(String)request.getAttribute("a");out.write("获得请求转发的数据为:"+a);%>
</body>
</html>

注意:request对象存储的数据只能通过请求转发的方式让其他页面进行获得和共享 

3.response对象

 该对象已在Servlet中做了详细讲解和介绍,这里就不再做过多的赘述,我们创建一个jsp文件来简单复习一下:

该对象用于操作和设置浏览器的显示,例如:定时刷新页面,文件下载,跳转页面等等都是指挥浏览器操作数据。

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body><!-- response给浏览器回复数据使用该对象可以实现,页面跳转,称为重定向 --><%  response.sendRedirect("OutDemo.jsp"); %>
</body>
</html>

4. session对象

 该对象已在Servlet中做了详细讲解和介绍,这里就不再做过多的赘述,我们创建一个jsp文件来简单复习一下:

该对象用于区分浏览器并保存各自浏览器要存储的数据,并在不切换浏览器的情况下,项目中的任何jsp和servlet都能共享session中存储的数据。

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body><!-- session:比喻成档案,用于存放数据的,数据的是否存在只和浏览器是否相同有关只要不切换浏览器,任何servlet,jsp都能共享 --><% session.setAttribute("b", "我是session的数据");out.write((String)session.getAttribute("b"));%>
</body>
</html>

5.exception对象

该对象实际是java基础中的异常处理,用于在代码报错的时候,输出和打印报错信息,以便于开发者的理解和解决bug问题。

这里结合上一篇文章中的page指令的知识来综合使用一下:

该代码演示了算术异常,空指针异常,数组下标越界异常,类型转换异常等等常见的错误异常,并在该页面报错的时候,指定跳转至error.jsp页面。

<%@ page language="java" errorPage="error.jsp" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<% 
//算数异常
//int x=100/0; 
//空指针异常
int[] nums=null;
//int a=nums.length;
//下标越界异常
nums=new int[3];
//nums[5]=8;//类型转换异常
//子类对象赋值给父类对象成为向上转型
//父类对象赋值给子类对象称为向下转型
//(前提父类对象原本就是子类对象)
Object object=new Object();
String str=(String)object;
out.write(str);
%>
</body>
</html>

 error.jsp

<%@ page language="java" isErrorPage="true" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
当前页面出现除法异常,请仔细检查除数是否为0
<p><%=exception.getMessage() %></p>
<p><%=exception.toString() %></p>
</body>
</html>

通过运行,可以看到所产生的错误异常信息。

6.page对象

通过查看翻译后的servlet代码可以看到,其实page就是Object的对象,赋值为当前类对象。

该对象使用频率比较小,这里做简单的演示

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- Jsp九大内置对象之一: page,对应的类Object类 -->
<%out.write(page.equals(this)?"page对象等于当前类对象":"不等于");
%>
</body>
</html>

7.config对象

该对象在Servlet的学习中已经讲过,需要学习的初学者请翻阅之前的文章进行学习。其本质的作用是获得Servlet在注册信息中的静态数据和配置信息,那在jsp中并不需要我们开发者对jsp进行注册,而是程序自动封装了注册信息的代码,隐藏该对象在jsp中使用频率较小。

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- Jsp九大内置对象之一:config对象,对应的类名ServletConfig -->
<%  String name= config.getServletName();out.write(name);
%>
</body>
</html>

8.application对象

该对象的类名为ServletContext,其作用和用法也是Servlet的学习中已详细讲解过,用于共享数据,其分为共享静态数据,共享动态数据,共享文件数据等作用。

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body><!-- application是ServletContext这个类的对象这个类在整个项目中只有一个对象,tomcat服务器一启动,就开始创建,tomcat服务器一关闭,该对象就被销毁,存在这个对象中的数据就会被删除只要服务器不关闭,任何Servlet和jsp都能共享数据--><% application.setAttribute("c", "我是application的数据");out.write((String)application.getAttribute("c"));%>
</body>
</html>

9.pageContext对象

该对象是jsp中独有的对象,该对象的作用是用于管理其余八个内置对象的快速使用和数据存储。

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- Jsp九大内置对象之一:pageContext
pageContext:当前页面的上下文对象
作用:1.用于管理和获得其他内置对象2.存储数据
pageContext可以获得任意其他的内置对象,可以管理所有内置对象--><%//out.write("aaaaa");pageContext.getOut().write("aaaa");//requestpageContext.getRequest();//responsepageContext.getResponse();//sessionpageContext.getSession();//exceptionpageContext.getException();//pagepageContext.getPage();//configpageContext.getServletConfig();//applicationpageContext.getServletContext();%></body>
</html>

四大作用域

内置对象作用域
application整个项目
session一次会话
request 一次请求 
pageContext一个页面

 按作用域从小到大排列:pageContext->request ->session->application

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- Jsp九大内置对象之一:pageContext
pageContext:当前页面的上下文对象
作用:1.用于管理和获得其他内置对象2.存储数据
pageContext可以获得任意其他的内置对象,可以管理所有内置对象--><!-- 四大作用域 --><%//存储数据//pageContext是可以存储数据,但是其作用域只能供其本身的jsp页面使用pageContext.setAttribute("a", "我是pageContext的数据");String info=(String)pageContext.getAttribute("a");out.write("<br>");out.write(info);//request对象中的数据是可以形成多个页面共享数据,但是要通过请求转发的方式打开其他页面才能形成共享数据//写法一//request.setAttribute("b", "我是request的数据");//写法二//第一个参数表示要添加的数据的名称 第二个参数表示要存储的数据  第三个参数表示要把数据存储给哪个对象pageContext.setAttribute("b", "我是request的数据", PageContext.REQUEST_SCOPE);String b=(String)request.getAttribute("b");out.write("<br>");out.write(b);//通过请求转发的方式跳转至five.jsp//request.getRequestDispatcher("five.jsp").forward(request, response);//判断session是否是刚刚创建//session对象中的数据可以供任何jsp和servlet页面进行共享//但是一旦切换浏览器访问服务器,那么数据就不存在//说明session对象能不能共享数据和浏览器有关if(session.isNew()){out.write("<br>");out.write("因为开启了一个新的浏览器,所以创建了一个新的session对象");//方法一    直接使用session存储数据//session.setAttribute("c", "我是session的数据");//方法二   使用pageContext间接帮session存储数据pageContext.setAttribute("c", "我是session的数据", PageContext.SESSION_SCOPE);}String c=(String)session.getAttribute("c");out.write("<br>");out.write(c);//application对象存储的数据可以让任何jsp和servlet进行共享数据//但是application对象的数据与服务器有关,只要服务器不停止,数据都能共享//方法一//application.setAttribute("d", "我是application的数据");//方法二pageContext.setAttribute("d", "我是application的数据",PageContext.APPLICATION_SCOPE);String d=(String)application.getAttribute("d");out.write("<br>");out.write(d);%>
</body>
</html>

 在其他jsp页面也能获得其添加的数据:

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body><%  
//通过运行看到效果会报错,报空指针错误,说明pageContext的数据在这个页面上获取不到
//pageContext的数据不能多个页面之间共享数据
//String info=(String)pageContext.getAttribute("a");//out.write(info);
//方法一    request对象自己直接获得数据
//String b=(String)request.getAttribute("b");
//方法二   pageContext帮request获得数据
//String b=(String)pageContext.getAttribute("b", PageContext.REQUEST_SCOPE);
//out.write("我获得了four.jsp页面的request对象的数据:"+b);//方法一    使用session直接获得数据
//String c=(String)session.getAttribute("c");
//方法二   pageContext帮session获得数据
//String c=(String)pageContext.getAttribute("c", PageContext.SESSION_SCOPE);
//out.write("我获得了four.jsp页面的session对象的数据:"+c);//方法一
//String d=(String)application.getAttribute("d");
//方法二
String d=(String)pageContext.getAttribute("d",PageContext.APPLICATION_SCOPE);
out.write("我获得了four.jsp页面的application对象的数据:"+d);
%>
</body>
</html>

 findAttribute(String key)(该方法的作用,在后面章节的EL表达式中进行讲解和对比,这里占时不做演示)

依次从pageContext,request,session,application四个作用域中,查找响应的属性,如果找到了返回值,且结束本次查找。

如果找不到,返回一个null

本章内容结束!!!


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

相关文章

JSP内置对象详解 常用方法

目录 out request response session application exception page config pageContext JSP内置对象的作用域 JSP内置对象是在JSP运行环境中已定义好的对象&#xff0c;可在JSP页面的脚本部分直接使用。 out对象 out 为输出流对象&#xff0c;主要用于向客户端输出流…

JSP内置对象

JSP内置对象的分类内置对象属性保存范围JSP内置对象的常用方法&#xff08;只列了一些&#xff09;小例子 一&#xff1a;JSP内置对象的分类 这些对象不用经过显示声明直接引用&#xff0c;也不用代码创建其实例&#xff0c;可在程序中直接使用&#xff0c;由Web Container为对…

jsp内置对象之request

一、内置对象概述 有些对象不用声明即可在jsp页面的java程序片和表达式中使用&#xff0c;这就是jsp 的内置对象。Jsp的常用的内置对象有request&#xff0c;response&#xff0c;session&#xff0c;aplication和out。Response和request对象是jsp内置对象中比较重要的两个&am…

JSP的内置对象详解

JSP内置对象 文章目录 JSP内置对象前言一、out对象1.原理2. 向客户端输出数据 二、page对象1.范围 三、pageContext 对象1.获取内置对象2.存储数据 四、request对象1.创建及获取请求2.范围 五、response 对象1.重定向网页2.处理HTTP文件头 六、session对象1.创建及获取客户的会…

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…