变量存取范围及JSP、JSTL和Struts技术中变量的存取方法

JSP中变量的定义范围实际有5种:本地范围,页面范围(page),请求范围(request),会话范围(session)和应用程序范围(application)。

以下介绍在各种技术中的变量存取方法。

u       JSP中:

存储:

本地范围变量直接定义,如:

String name="name in page";

page范围变量保存在pageContext隐式对象中,如:

pageContext.setAttribute("nameContext","name in pageContext");

request范围变量保存在request隐式对象中,如:

request.setAttribute("nameRequest","name in Request");

session范围变量保存在session隐式对象中,如:

session.setAttribute("nameSession","name in Session");

application范围变量保存在application隐式对象中,如:

application.setAttribute("nameApplication","name in Application");

读取:

name:<%=name%><br/>

nameContext:<%=pageContext.getAttribute("nameContext").toString()%><br/>

nameRequest:<%=request.getAttribute("nameRequest").toString() %><br/>

nameSession:<%=session.getAttribute("nameSession").toString() %><br/>

nameApplication:<%=application.getAttribute("nameApplication").toString() %>

u       JSTL中

JSTL中没有本地范围的概念。只有page,request,session和application范围的变量。

存储

使用c:set存储变量。

scope属性默认为page, 若不指定则变量存储在page范围里:

<c:set var="name" value="name in where"/>

<c:set var="namePage" value="name in pageScope" scope="page"></c:set>

<c:set var="nameRequest" value="name in requestScope" scope="request"></c:set>

<c:set var="nameSession" value="name in sessionScope" scope="session"></c:set>

<c:set var="nameApplication" value="name in ApplicationScope" scope="page"></c:set>

读取

使用c:out读取变量

c:out标签依次从page,request,session,application范围查找指定变量然后输出。也可以指定查找范围。

nameSession - <c:out value="${nameSession}"/> - 依次搜索至session范围,找到nameSession变量,然后输出。<br/>

namePage - <c:out value="${pageScope.namePage }"/> - 指定搜索范围为page范围<br>

nameRequest - <c:out value="${requestScope.nameRequest }"/> - 指定搜索范围为request范围<br>

nameSession - <c:out value="${sessionScope.nameSession }"/> - 指定搜索范围为session范围<br>

nameApplication - <c:out value="${applicationScope.nameApplication }"/> - 指定搜索范围为application范围<br>

name - <c:out value="${pageScope.name }"/>

struts中
跟JSTL一样,只有page,request,session,application范围。
存储
使用bean:define
toScope属性指定存储范围,默认为page, 若不指定则变量存储在page范围里
读取
使用bean:write
scope属性指定读取范围,若没有设置此属性,则依次从page,request,session,application范围查找指定变量然后输出。

时间: 2024-08-07 14:39:17

变量存取范围及JSP、JSTL和Struts技术中变量的存取方法的相关文章

C/C++——C++变量的作用域与生命周期,C语言中变量的作用域和生命周期

全局变量 作用域:全局作用域(全局变量只需在一个源文件中定义,就可以作用于所有的源文件.) 生命周期:程序运行期一直存在 引用方法:其他文件中要使用必须用extern 关键字声明要引用的全局变量. 内存分布:全局数据区 注意:如果在两个文件中都定义了相同名字的全局变量,连接出错:变量重定义 全局静态变量 作用域:文件作用域(只在被定义的文件中可见.) 生命周期:程序运行期一直存在 内存分布:全局数据区 定义方法:static关键字,const 关键字 注意:只要文件不互相包含,在两个不同的文件中

(12)Powershell中变量的类型

Window Powershell中变量的类型与Java,C#等高级语言中变量的类型不一样,可以不用显示指定Powershell中变量的类型,即Powershell中的变量具有更大的灵活性.Powershell中的变量采用 .Net Framework类型. 默认情况下,当变量只有一个值时,变量的数据类型由赋予变量的值决定.例如,下面的语句创建一个整数 (System.Int32) 类型的变量: PS C:\> $a=3 如果需要确定变量的 .NET Framework 类型,可以使用 GetT

恼人的The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved...错误,无奈用Struts的bean:write替代了JSTL的C:out

一个应用中有两个页面使用了JSTL的c:out输出,就类似这么简单三句 <c:if test="${!empty error}">       <h2><c:out value="${error}"/></h2> </c:if> 应用在本地MyEclipse中的Tomcat6跑得正常,但放到CentOS的Tomcat7上出现了错误 The absolute uri: http://java.sun.com/

http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar files deployed wit

异常:The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar files deployed with this application 这是因为页面中用了struts标签的原因. 解决方法: 1.下载jstl1.1 解压后把lib文件夹下的jstl.jar和standard.jar复制到项目的WEB-INF/lib目录下,到此结束就行,如果还需要tld等

jsp: jstl标签库

jstl标签库,通过maven配置: <!-- jstl标签的支持 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> 常用标签:out.set.remove.catch.if.choose.when 和 URL 表达式

java cannot find the tag library descriptor for &quot;http://java.sun.com/jsp/jstl/core&quot;

出现java cannot find the tag library descriptor for "http://java.sun.com/jsp/jstl/core" 主要的愿意是因为没有jstl的jar包,如果你里面有了,那么可能是版本的问题,j2ee版本如果是1.4那么就要加jstl.jar包,如果是以上就不用加了,还有一个问题是jstl.jar包版本的问题,如果你里面是jstl1.1那么http://Java.sun.com/jsp/jstl/core就是这样,如果是1.0那

java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config

今天写SpringMvc时,遇到这样一个问题: java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config at org.springframework.web.servlet.support.JstlUtils.exposeLocalizationContext(JstlUtils.java:101) at org.springframework.web.servlet.view.JstlView.exposeHelpe

如何使用 JSP JSTL 显示/制作树(tree) 菜单

JSTL里面并没有直接制作tree菜单的元素,因此递归是JSP JSTL显示/制作tree菜单的唯一方法. 以下详述如何制作tree菜单. 首先,在主页面里面增加包含制作树菜单的jsp,例如: 在myMenuTree.jsp里面,主要函数如下所示:(其中css相关的class样式设置代码可以忽略) 请注意里面的递归判断语句. 这样,就得到树形的菜单,如下所示: 木头大哥所发的文章均基于自身实践,各位江湖好汉可以通过:[email protected] 联系之.

NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config

今天调试SSM框架项目后台JSOn接口,报出来一个让人迷惑的错误:NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config 上网查了一下别人的博客 NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config 根据楼主的提示下载了zip,standard和jstl两个包放入tomcat lib下,再次运行发现报了404错误 HTTP Status 404 - /project_name/W