JSP四大域属性空间(page、request、session、application)详解
JSP中提供了四个域属性空间:page(页面作用域)、request(请求作用域)、session会话作用域、application(应用程序作用域)。
1、page域:
page域作用范围:当前页面,即只在一个jsp页面中有效。当页面跳转时,属性就失效了。
page和pageContext区别:
page:对象是当前页面转换后的Servlet类的实例,是Object对象,在JSP页面中,很少使用page对象。
pageContext:javax.servlet.jsp.PageContext的实例,该对象代表该JSP页面的上下文,可以访问该页面中的共享数据,能够调用、存取其他隐含对象。
例子:
编辑index.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><%//设置page域属性pageContext.setAttribute("user", "zhangsan");%><%//获取page域属性//主要这里getAttribute()返回的是Object对象,需要强转String user = (String)pageContext.getAttribute("user");out.print("user = " + user);%>
</body>
</html>
index.jsp运行结果:
编辑index2.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><%//尝试获取index.jsp中的user属性值,如果为null则无法获取String user = (String)pageContext.getAttribute("user");out.print("user = " + user);%>
</body>
</html>
2、request(请求作用域):
request:http发出请求到服务器返回响应的全过程,在这个过程中使用forward方式跳转多个jsp,在这些页面里都可以使用该域中的变量。一旦客户端刷新浏览器,重新发起请求,则之前的请求参数和属性都将失效。
例子:
编辑index.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>index page<br><%//设置page域属性request.setAttribute("user", "zhangsan");request.getRequestDispatcher("index2.jsp").forward(request, response);%></body>
</html>
编辑index2.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>index2 page<br><%//尝试获取index.jsp中的user属性值,如果为null则无法获取String user = (String)request.getAttribute("user");out.print("user = " + user);%>
</body>
</html>
运行结果:
当我们在服务器响应结束后,之间访问index2.jsp是结果为空
3、session(会话作用域)
session:当前会话中,即浏览器打开到浏览器关闭的整个过程(默认时间为30分钟,可以设置,也可使用invalidate()方法强制结束)。
例子
编辑index.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>index page<br><%//设置page域属性session.setAttribute("user", "zhangsan");%></body>
</html>
编辑index2.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>index2 page<br><%//尝试获取index.jsp中的user属性值,如果为null则无法获取String user = (String)session.getAttribute("user");out.print("user = " + user);%>
</body>
</html>
首先我们直接访问index.jsp
然后我们直接访问index2.jsp
当我们将index.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>index page<br><%//设置page域属性session.setAttribute("user", "zhangsan");session.invalidate();%></body>
</html>
再次访问index.jsp,之后再访问index2.jsp结果如下
4、application(应用程序作用域)
application:服务器一开始执行服务,到服务器关闭为止。它的有效范围是整个应用。 这里的整个应用是指应用启动到应用结束之间(服务器为关闭时)。当服务器关闭时,才会被清空。
例子
编写index.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>index page<br><%//设置page域属性application.setAttribute("user", "zhangsan");%></body>
</html>
编写index2.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>index2 page<br><%//尝试获取index.jsp中的user属性值,如果为null则无法获取String user = (String)application.getAttribute("user");out.print("user = " + user);%>
</body>
</html>
先访问index.jsp,在访问index2.jsp
重启服务器,访问index2.jsp
此时application域中user属性已被清空。
JSP四大域属性空间(page、request、session、application)详解相关推荐
- 观看慕课老师milanlover视频JavaBean+Jsp动作元素+page/request/session/application作用域范围+Model1
Javabeans类写在src包里. 建一个实体类的po包,建一个用户类. 使用普通方式创建javabean实例: 新建Users.java: package com.po; /*用户类*/ publ ...
- JSP四大作用域属性范围
JSP四大作用域分别为: page,request , session,application . JSP的四个作用域(从小到大) pageContext:页面作用域 request:请求作用域 Se ...
- JSP之四大作用域(pageContext,request,session,application)
JSP的四大作用域的存储和获取数据的方式一样,差别在于取值的范围不同. 四大域各自作用范围为: pageContext:当前JSP页面有效 request:请求有效 session:会话有效(关闭浏览 ...
- 暑期项目经验(九) -- request session application
request.session.application 一.基础知识 可以看看 浅谈:request,session,application (http://blog.csdn.net/hzc543 ...
- Cookie/Session机制详解
Cookie/Session机制详解 分类: 架构师之路2011-11-09 17:55 35382人阅读 评论(20) 收藏 举报 session浏览器服务器stringjavascript加密 会 ...
- 2、cookie session token详解
cookie session token详解 转自:http://www.cnblogs.com/moyand/ 发展史 1.很久很久以前,Web 基本上就是文档的浏览而已, 既然是浏览,作为服务器, ...
- session机制详解
session机制详解 摘要:虽然session机制在web应用程序中被采用已经很长时间了,但是仍然有很多人不清楚 session机制的本质,以至不能正确的应用这一技术.本文将详细讨论session的 ...
- 【PHP基础-9】Session机制详解及Session身份认证应用案例
目录 1 Session 机制概述 1.1 什么是Session 1.2 Session作用 1.3 session的运行机制: 2 Session应用案例 2.1 实验要求 2.2 实验环境 2.3 ...
- Local Storage和Session Storage详解
Local Storage和Session Storage详解 1. 来历 在HTML5中新加了Web Storage的储存方式,主要是为了弥补Cookie储存容量的不足.Web Storage分为L ...
最新文章
- 【树莓派搭建个人网站】花生壳内网穿透
- C++ 获取当前运行程序的路径
- extjs6 带条件查询分页
- 东芝打印机共享怎么设置_东芝e-studio181打印机怎么设置网络打印机
- 基于JavaWeb的C2C网上购物平台系统设计
- 【致敬雷神】星星之火,可以燎原
- 天合光能为澳大利亚太阳能农场供应双玻组件
- Android客户端与PC服务器实现Socket通信(wifi)
- 常见的标识符命名风格
- 如何提取视频中的音频,这个方法真的很简单
- Agile Office 365 免积分下载
- selenium使用小瓜子
- CSS/HTML简单静态页面
- 想学编程要些啥基础?
- echarjs 折线图实现
- 【话题】什么是前端工程化?
- jq 取 scrollHeight值
- 如何成长为一名优秀的产品经理?
- 转发一份GoldenGate 配置文档
- aeiou(pp6.9)
热门文章
- Python 3.8.0百度网盘资源下载
- 学猫叫歌词计算机,学猫叫歌词 小峰峰(陈峰)、小潘潘(潘柚彤)_晴格歌词网
- z中国禽肉深加工市场盈利动态与竞争前景分析报告2022-2027年
- 【vijos】1006 晴天小猪历险记之Hill(dijkstra)
- MC 1.18.2 FORGE 开服教程及自动备份
- MacBook Pro 16寸 i9-9880H对比 桌面级CPU i7-8700
- php开发discuz插件,discuz x3插件开发傻瓜图文教程,用demo说话
- 【手把手】RPA机器人商城应用:工资单发送机器人
- DSRC通信协议标准
- 超级计算机预测2月有雪寒潮,寒潮连续南下,冷冬毋庸置疑?权威专家:到明年二月底最终确定...