转自:Ronbay的新浪博客
JSP中变量的范围分为四种:page,request,session和application
这四个范围依序从前到后,范围越来越大

一、page范围
在page范围内定义的变量,只能在同一个页面内部访问。在JSP页面中,演示如下代码:

<%
pageContext.setAttribute("name","Johnson");
out.println(pageContext.getAttribute("name"));
%>

上面的代码中,在page范围内,定义了一个名称为name的属性,其值为Johnson,
第二行代码将该属性的值打印出来。注意:这样定义的这个name属性,在这个页面之外
的部分是访问不到的。考虑到page范围只是在一个页面中共享数据,其范围是非常小的。
需要注意的是,在page范围,以及其他三种范围中,存储的值都只能是引用类型的值。
下面的例子演示怎么将一个整数存入page范围之内。

<%
pageContext.setAttribute("amount",new Integer(100));
out.println(pageContext.getAttribute("amount"));
%>

二、request范围
在Java的WEB应用程序中,可以将一个变量值存入request范围中,然后可以将request
对象传递给下一个页面,那么下一个页面中,可以获得从上一个页面传送过来的request
对象中保存的属性值。
这里,我们修改上一章中的登陆案例,来演示request范围属性的使用。
我们希望用户登录成果以后,能够在登陆成功页面,即welcome.jsp页面中,显示
该登陆用户的用户名,那么可以修改前面登陆案例中的验证登陆用户的servlet如下:

public void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
String name=request.getParameter("name");
String pwd=request.getParameter("pwd");
User user=new User();
user.setName(name);
user.setPwd(pwd);
String dbName=request.getRealPath("goods.mdb");
//转向器
String url="";
try {
db d1 = new db(dbName);
if(d1.isUserValid(user))
{
request.setAttribute("name",name);
url="welcome.jsp";
}
else
{
url="failed.jsp";
}
RequestDispatcher rd=request.getRequestDispatcher(url);
//把用户名存入request scope中
//设置属性
rd.forward(request,response);
}
catch (Exception ex) {
ex.printStackTrace();
}
}

在上面的代码中,用户登陆成功以后,把用户名存入request范围,
request.setAttribute(“name”,name);
然后获取将要转向的页面的转向器,

url=”welcome.jsp”;
RequestDispatcher rd=request.getRequestDispatcher(request,response);

这样,本servlet中的request对象就会被传递到下一个页面,在下一个页面,
即welcome.jsp中,就可以通过

request.getAttribute(“name”);

的方式获取到name属性,即登陆用户的用户名。

三、session范围
当用户通过浏览器和服务器连通以后,服务器为该用户在服务器上分配一个供该用户专
用的内存空间,这个内存空间中保存着用户访问该网站服务器期间的一些信息,这些信
息称为会话信息,也就是Session信息。服务器为每个访问该服务器的连接分配一个唯
一的编号,该编号用以唯一确认该用户。这个编号就是我们通常说的SessionID。
有了这个会话信息空间以后,用户就可以把和本次访问相关的一些信息保存在这个会话
信息空间中。会话信息空间中保存的信息只和本次连接有关。
需要注意的是,通过同一台主机打开多个浏览器访问服务器的时候,每一个浏览器连
接对应一个会话。要设置一个session范围的变量,可以使用下面的方法。

<%
session.setAttribute("name",”Johnson”);
out.println(session.getAttribute("name"));
%>

四、application范围
一台WEB服务器启动以后,在服务器上有一个由所有连接共享的内存空间,
这就是application范围空间。在application范围中定义的变量,可以由所有连接共享。
一个连接对application范围中变量的修改,会体现到另外一个连接中。
要设置一个application范围的变量,可以使用如下方法:

<%
application.setAttribute("name",”Johnson”);
out.println(application.getAttribute("name"));
%>

Jsp四种变量作用范围相关推荐

  1. 硬核!Python 四种变量的代码对象和反汇编分析

    作者 | 大奎 整理 | 阳哥 来源丨Python数据之道 在Python基础的学习过程中,对变量和参数的理解有助于我们从更基础层面了解Python语言的运行.在这个过程中,还是有不少冷门和细节的地方 ...

  2. FreeMarker四种变量的用法

    原文:http://www.656463.com/article/286 摘要: freemarker的变量可以分为四种,分别是数据模型的变量[root中的变量],模板中的变量使用[<#assi ...

  3. 四种变量的区别(局部变量,全局变量,静态局部变量,静态全局变量)

    区别: 1. 局部变量: (1)在函数体内部或者复合语句中定义的变量称为局部变量. (2)作用域为当前的函数体. (3)在栈区(动态存储区)分配. (4)函数调用时开始分配,调用结束时释放. 2. 全 ...

  4. Jsp的四种作用域范围

    首先要声明一点,所谓"作用域"就是"信息共享的范围",也就是说一个信息能够在多大的范围内有效. JSP的四种范围,分别为page,request,session ...

  5. Jsp学习总结(1)——JSP九大内置对象和四种属性范围解读

    一.四种属性范围 1.1.在JSP中提供了四种属性保存范围 page:在一个页面内保存属性,跳转之后无效 request:在一次服务请求范围内,服务器跳转后依然有效 session:-在一次会话范围内 ...

  6. JSP页面中常用四种标签

    JSP页面常用四种标签: 1. EL表达式:  ${} 2. jstl表达式(sun apache): <%@ taglib prefix="c" uri="htt ...

  7. 【Kotlin】Kotlin 类的继承 二 ( 属性覆盖 | 属性覆盖的四种情况 | 常量 / 变量 属性覆盖 | 子类初始化与属性覆盖 )

    文章目录 I . 属性覆盖基本方式 II . 属性覆盖的四种情况 III . 常量 ( val ) / 变量 ( var ) 属性覆盖 IV . 子类初始化时考虑覆盖属性的使用 I . 属性覆盖基本方 ...

  8. jsp内置对象【02】四种内置对象【02】session、application

    我们继续来学习,上一篇文章中说到了request属性,那么既要想客户端和服务端都都能实现跳转的话,就用到了session. 第三种:session属性 我们接着修改一下上一篇文章中的代码来对比一下: ...

  9. JSP中四种属性范围

    在JSP中提供了四种属性的保存范围,所谓属性保存范围,指的就是一个设置的对象,可以在多少个页面中保存并继续使用. 四种属性范围: pageContext      在一个页面中保存属性,跳转之后无效. ...

  10. java互换_两个变量交换的四种方法(Java)

    对于两种变量的交换,我发现四种方法,下面我用Java来演示一下. 1.利用第三个变量交换数值,简单的方法. (代码演示一下) 1 class TestEV 2 //创建一个类 3 { 4 public ...

最新文章

  1. AI芯片之争白热化的当下,如何设计一款真正适用于终端的AI芯片?
  2. 2019年北航OO第四单元(UML任务)及学期总结
  3. [转] 2012年经典书目
  4. python爬取的信息条数比页面显示多_Python爬取分析北京二手房数据?数据结果真的太吓人了...
  5. angularJs中ngModel的坑
  6. 虚拟机无法连接至网络
  7. 钱大妈生鲜“败走北京”
  8. php矢量瓦片,矢量瓦片 - SegmentFault 思否
  9. mysql原生sql语句_原生SQL语句
  10. 视频教程-微信公众号编辑器开发-微信公众号开发11-微信开发php-微信开发
  11. 电脑重装系统(win7)
  12. POI excel添加数据有效性验证以及解决DataValidation超长的问题
  13. Latex中插入多张图片,实现并排排列或者多行多列排列
  14. 新手python之BP神经网络——手写公式推导+可运行代码+编程中遇到的问题
  15. el-checkbox同时获取value 和 name
  16. 椭圆型变分问题理论及数值方法
  17. 财务部门服务器操作系统,中型企业如何选择财务系统服务器?
  18. OnActionExecuting 中设置跳转指定网址或路由
  19. Python 打印阿姆斯特朗数
  20. 1gb.ru php,BeGet.ru:俄罗斯1G容量稳定PHP免费空间申请使用图文教程 | 骤雨打新荷...

热门文章

  1. 修复图片移入移出抖动错位bug
  2. docker 运行命令
  3. android抽屉效果
  4. 程序员啊 ,请保护好你的眼睛 !
  5. PHP中的PEAR是什么?
  6. 小米root以及面具的使用
  7. SAP ERP 与 Oracle ERP 比较(转)
  8. 洛谷P4158 [SCOI2009]粉刷匠 题解
  9. 程序员是如何从小白做到年薪百万
  10. 频繁默认网关不可用_Win10经常断网提示默认网关不可用的解决方法