Skip to main content

moregeek program

java web程序设计基础二(服务器交互篇——四大属性作用域)_wx630f055ce23fc的博客-多极客编程

在介绍JSP各个对象的使用前,先带大家认识一下四大属性作用域吧

一、概念

JSP中提供了四种 属性的保存范围 ,所谓的属性保存范围,指的就是一个设置的 对象 ,可以在 多少个页面中保存使用

Java Web程序设计基础二(服务器交互篇——四大属性作用域)_html

二、pageContext作用域

1、仅限于单页面有效

即使网址不变页面跳转了也不行

(1)一般来讲都习惯于将这种范围称为page范围,表示将一个属性设置在本页上,跳转之后无法取得

Java Web程序设计基础二(服务器交互篇——四大属性作用域)_web开发_02

(2)代码例子

page_scope_01.jsp文件

<%@ page contentType="text/html" pageEncoding="UTF-8"%>
<%@ page import="java.util.*"%>
<html>
<head>
<title>
http://www.fit.edu.cn/,Java Web开发
</title>
</head>
<body>
<% // 设置属性
pageContext.setAttribute("name","是申小兮呀") ;
pageContext.setAttribute("birthday",new Date()) ; %>
中间其它内容
<hr />
<% String username = (String) pageContext.getAttribute("name") ;
Date userbirthday = (Date)pageContext.getAttribute("birthday") ; %>
<h2>姓名:<%=username%></h2>
<h2>日期:<%=userbirthday%></h2>
</body>
</html>

Java Web程序设计基础二(服务器交互篇——四大属性作用域)_java_03

page_scope_02.jsp文件
<%@ page contentType="text/html" pageEncoding="UTF-8"%>
<%@ page import="java.util.*"%>
<html>
<head>
<title>
http://www.fit.edu.cn/,Java Web开发
</title>
</head>
<body>
<% // 设置属性
pageContext.setAttribute("name","是申小兮的PageScope-forward") ;
pageContext.setAttribute("birthday",new Date()) ; %>
<jsp:forward page="page_scope_03.jsp"/>
</body>
</html>
page_scope_03.jsp文件
<%@ page contentType="text/html" pageEncoding="UTF-8"%>
<%@ page import="java.util.*"%>
<html>
<head>
<title>
http://www.fit.edu.cn/,Java Web开发
</title>
</head>
<body>
<% String username = (String) pageContext.getAttribute("name") ;
Date userbirthday = (Date)pageContext.getAttribute("birthday") ; %>
<h2>姓名:<%=username%></h2>
<h2>日期:<%=userbirthday%></h2>
</body>
</html>

Java Web程序设计基础二(服务器交互篇——四大属性作用域)_html_04

三、request请求作用域

1、仅在一次请求中保存

在服务器内部跳转有效

(1)在服务器内部跳转之后,设置的内容依然会被保留下来

Java Web程序设计基础二(服务器交互篇——四大属性作用域)_java_05

(2)a标签 超链接跳转 了的数据是 不生效 的,因为网址变了

(3)代码例子

①request_scope_01.jsp文件

<%@ page contentType="text/html" pageEncoding="UTF-8"%>
<%@ page import="java.util.*"%>
<html>
<head>
<title>
跳转前1111111
</title>
</head>
<body>
<% // 设置属性
request.setAttribute("name","您好,申小兮") ;
request.setAttribute("today",new Date()) ; %>
<jsp:forward page="request_scope_02.jsp"/>
</body>
</html>
request_scope_02.jsp文件
<%@ page contentType="text/html" pageEncoding="UTF-8"%>
<%@ page import="java.util.*"%>
<html>
<head>
<title>
跳转后22222222
</title>
</head>
<body>
page 2222222
<p>
<% String username = (String) request.getAttribute("name") ;
Date usertoday = (Date)request.getAttribute("today") ; %>
<h2>姓名:<%=username%></h2>
<h2>日期:<%=usertoday%></h2>
</body>
</html>

Java Web程序设计基础二(服务器交互篇——四大属性作用域)_java_06

②request_scope_03.jsp文件
<%@ page contentType="text/html" pageEncoding="UTF-8"%>
<%@ page import="java.util.*"%>
<html>
<head>
<title>
http://www.fit.edu.cn/,Java Web开发
</title>
</head>
<body>
<% // 设置属性
request.setAttribute("name","申小兮") ;
request.setAttribute("today",new Date()) ; %>
<a href="request_scope_02.jsp">通过链接取得属性</a>
</body>
</html>

Java Web程序设计基础二(服务器交互篇——四大属性作用域)_web开发_07

③request_scope_04.jsp文件
<%@ page contentType="text/html" pageEncoding="UTF-8"%>
<%@ page import="java.util.*"%>
<html>
<head>
<title>
http://www.fit.edu.cn/,Java Web开发
</title>
</head>
<body>
<% // 设置属性,注意这里是pageContext对象,理论上应该是page作用域
pageContext.setAttribute("name","申小兮",PageContext.REQUEST_SCOPE) ;
pageContext.setAttribute("today",new Date(),PageContext.REQUEST_SCOPE) ; %>
<jsp:forward page="request_scope_02.jsp"/>
</body>
</html>

Java Web程序设计基础二(服务器交互篇——四大属性作用域)_web开发_08

四、session作用域

1、仅同一个浏览器内有效

在一次会话范围中,无论何种跳转都可以使用[图片上传失败...(image-760381-1663812721726)]

session_scope_01.jsp文件
<%@ page contentType="text/html" pageEncoding="UTF-8"%>
<%@ page import="java.util.*"%>
<html>
<head>
<title>
http://www.fit.edu.cn/,Java Web开发
</title>
</head>
<body>
<% // 设置属性
session.setAttribute("name","申小兮") ;
session.setAttribute("today",new Date()) ; %>
<a href="session_scope_02.jsp">通过链接取得属性</a>
</body>
</html>
session_scope_02.jsp文件
<%@ page contentType="text/html" pageEncoding="UTF-8"%>
<%@ page import="java.util.*"%>
<html>
<head>
<title>
http://www.fit.edu.cn/,Java Web开发
</title>
</head>
<body>
<% String username = (String) session.getAttribute("name") ;
Date usertoday = (Date)session.getAttribute("today") ; %>
<h2>姓名:<%=username%></h2>
<h2>生日:<%=usertoday%></h2>
</body>
</html>

Java Web程序设计基础二(服务器交互篇——四大属性作用域)_html_09

②Microsoft Edge浏览器打开

Java Web程序设计基础二(服务器交互篇——四大属性作用域)_html_10

Java Web程序设计基础二(服务器交互篇——四大属性作用域)_html_11

五、application作用域

1、开机就生效

在整个服务器上保存,所有用户都可以使用

(1)对不同的session(用户)、不同浏览器在一个服务器中始终有效[图片上传失败...(image-4c12a-1663812721726)]

(2)代码例子

application_scope_01.jsp
<%@ page contentType="text/html" pageEncoding="UTF-8"%>
<%@ page import="java.util.*"%>
<html>
<head>
<title>
http://www.fit.edu.cn/,Java Web开发
</title>
</head>
<body>
<% // 设置属性
application.setAttribute("name","申小兮的ApplicationScope") ;
application.setAttribute("today",new Date()) ; %>
<a href="application_scope_02.jsp">通过链接取得属性</a>
</body>
</html>
application_scope_02.jsp
<%@ page contentType="text/html" pageEncoding="UTF-8"%>
<%@ page import="java.util.*"%>
<html>
<head>
<title>
http://www.fit.edu.cn/,Java Web开发
</title>
</head>
<body>
<% String username = (String) application.getAttribute("name") ;
Date usertoday = (Date)application.getAttribute("today") ; %>
<h2>姓名:<%=username%></h2>
<h2>生日:<%=usertoday%></h2>
</body>
</html>
任意浏览器都可打开

Java Web程序设计基础二(服务器交互篇——四大属性作用域)_html_12

<1>JSP提供了由容器实现和管理的 内置对象 ,在JSP页面中可以直接使用, 不需要实例化 ,通过存取这些内置对象实现与JSP页面的Servlet环境的相互访问

<2>JSP一共提供了 九个 内置对象: out、request、response、sesion、application、pageContext、config、page和exception

注意:上面的四大属性作用域都属于 内置对象

©著作权归作者所有:来自51CTO博客作者小二上酒8的原创作品,请联系作者获取转载授权,否则将追究法律责任

google aviator——轻量级 java 表达式引擎实战_mb6225d2606028d的博客-多极客编程

表达式引擎技术及比较 Drools 简介 Drools(JBoss Rules )是一个开源业务规则引擎,符合业内标准,速度快、效率高。业务分析师或审核人员可以利用它轻松查看业务规则,从而检验是否已编码的规则执行了所需的业务规则。 除了应用了 Rete 核心算法,开源软件 License 和 100% 的Java实现之外,Drools还提供了很多有用的特性。其中包括实现了JSR94 API和创新的

aqs:java 中悲观锁的底层实现机制_飞鱼的博客-多极客编程

介绍 AQS AQS(AbstractQueuedSynchronizer)是 Java 并发包中,实现各种同步组件的基础。比如 各种锁:ReentrantLock、ReadWriteLock、StampedLock 各种线程同步工具类:CountDownLatch、CyclicBarrier、Semaphore 线程池中的 Worker Lock 接口的实现基本都是通过聚合了一个 AQS 的

hibernate中session的get和load_是温度呀的博客-多极客编程

hibernate中Session接口提供的get()和load()方法都是用来获取一个实体对象,在使用方式和查询性能上有一些区别。测试版本:hibernate 4.2.0。getSession接口提供了4个重载的get方法,分别通过“持久类+主键”和“全类名+主键”以及“锁选项”来获取实体对象。public Object get(Class clazz, Serializable id); pu

java 中悲观锁的底层实现机制_wx630f055ce23fc的博客-多极客编程

介绍 AQSAQS(AbstractQueuedSynchronizer)是 Java 并发包中,实现各种同步组件的基础。比如各种锁:ReentrantLock、ReadWriteLock、StampedLock各种线程同步工具类:CountDownLatch、CyclicBarrier、Semaphore线程池中的 WorkerLock 接口的实现基本都是通过聚合了一个 AQS 的子类来完成线程

一文了解 java 8 - 18,垃圾回收的十次进化_wx630f055ce23fc的博客-多极客编程

经历了数千次改进,Java的垃圾回收在吞吐量、延迟和内存大小方面有了巨大的进步。2014年3月JDK 8发布,自那以来JDK又连续发布了许多版本,直到今日的JDK 18是Java的第十个版本。借此机会,我们来回顾一下HotSpot JVM的垃圾回收器的发展全过程。关于垃圾回收、度量和取舍HotSpot JVM中负责管理应用程序堆的组件叫做“垃圾回收器”(Garbage Collector,即GC)

java安全之velocity模版注入_wx630f055ce23fc的博客-多极客编程

Java安全之Velocity模版注入Apache VelocityApache Velocity是一个基于Java的模板引擎,它提供了一个模板语言去引用由Java代码定义的对象。它允许web 页面设计者引用JAVA代码预定义的方法Pom.xml<dependency> <groupId>org.apache.velocity</groupId> &

google aviator——轻量级 java 表达式引擎实战_mb6225d2606028d的博客-多极客编程

表达式引擎技术及比较 Drools 简介 Drools(JBoss Rules )是一个开源业务规则引擎,符合业内标准,速度快、效率高。业务分析师或审核人员可以利用它轻松查看业务规则,从而检验是否已编码的规则执行了所需的业务规则。 除了应用了 Rete 核心算法,开源软件 License 和 100% 的Java实现之外,Drools还提供了很多有用的特性。其中包括实现了JSR94 API和创新的

aqs:java 中悲观锁的底层实现机制_飞鱼的博客-多极客编程

介绍 AQS AQS(AbstractQueuedSynchronizer)是 Java 并发包中,实现各种同步组件的基础。比如 各种锁:ReentrantLock、ReadWriteLock、StampedLock 各种线程同步工具类:CountDownLatch、CyclicBarrier、Semaphore 线程池中的 Worker Lock 接口的实现基本都是通过聚合了一个 AQS 的

js:监听页面滚动scroll,实现阅读进度条_彭世瑜的博客-多极客编程

实现原理 // 距顶部 var scrollTop = document.documentElement.scrollTop || document.body.scrollTop; // 可视区高度 var clientHeight = document.documentElement.clientHeight || document.body.clientHeight; // 滚动条总高度

go语言之一等函数_zzxiaoma的博客-多极客编程

可以将函数赋值给变量,可以将函数传递给函数,甚至可以编写创建并返回函数的函数。 func add() int { return 1 + 1}adds := addfmt.Println(adds())调用函数的时候需要用到圆括号,单这次的程序在赋值的时候并没有这样做,这里把add()赋给变量adds,通过adds()来调用函数。adds变量的类型是函数,具体来说就是一个不接收任何形参并且只

java 中悲观锁的底层实现机制_wx630f055ce23fc的博客-多极客编程

介绍 AQSAQS(AbstractQueuedSynchronizer)是 Java 并发包中,实现各种同步组件的基础。比如各种锁:ReentrantLock、ReadWriteLock、StampedLock各种线程同步工具类:CountDownLatch、CyclicBarrier、Semaphore线程池中的 WorkerLock 接口的实现基本都是通过聚合了一个 AQS 的子类来完成线程

一文了解 java 8 - 18,垃圾回收的十次进化_wx630f055ce23fc的博客-多极客编程

经历了数千次改进,Java的垃圾回收在吞吐量、延迟和内存大小方面有了巨大的进步。2014年3月JDK 8发布,自那以来JDK又连续发布了许多版本,直到今日的JDK 18是Java的第十个版本。借此机会,我们来回顾一下HotSpot JVM的垃圾回收器的发展全过程。关于垃圾回收、度量和取舍HotSpot JVM中负责管理应用程序堆的组件叫做“垃圾回收器”(Garbage Collector,即GC)