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

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

一、概念

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

二、pageContext作用域

1、仅限于单页面有效

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

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

(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>

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>

三、request请求作用域

1、仅在一次请求中保存

在服务器内部跳转有效

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


(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>

②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>

 ③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>

四、session作用域

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

在一次会话范围中,无论何种跳转都可以使用


 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>


②Microsoft Edge浏览器打开



五、application作用域

1、开机就生效

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

(1)对不同的session(用户)、不同浏览器在一个服务器中始终有效


(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>

任意浏览器都可打开

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

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

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

Java Web 文章被收录于专栏

web技术简介,***页技术,JSP运行原理,JSP基本组成,脚本元素,指令元素

全部评论
感谢楼主啊,分享的这么详细
点赞 回复 分享
发布于 2022-09-25 22:10 陕西

相关推荐

西松屋:说明原部门有机会把
点赞 评论 收藏
分享
02-08 20:56
已编辑
南京工业大学 Java
在等offer的比尔很洒脱:我也是在实习,项目先不说,感觉有点点小熟悉,但是我有点疑问,这第一个实习,公司真的让实习生去部署搭建和引入mq之类的吗,是不是有点过于信任了,我实习过的两个公司都是人家正式早搭好了,根本摸不到部署搭建的
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务