JSTL的用法
JSP基础之JSTLc:forEach用法

JSP基础之JSTLc:forEach⽤法在JSP的开发中,迭代是经常要使⽤到的操作。
例如,逐⾏的显⽰查询的结果等。
在早期的JSP中,通常使⽤Scriptlets来实现Iterator或者Enumeration对象的迭代输出。
现在,通过JSTL的迭代标签可以在很⼤的程度上简化迭代操作。
JSTL所⽀持的迭代标签有两个,分别是<c:forEach>和<c:forTokens>。
这⾥介绍的是<c:forEach>标签。
<c:forEach>标签的作⽤就是迭代输出标签内部的内容。
它既可以进⾏固定次数的迭代输出,也可以依据集合中对象的个数来决定迭代的次数。
<c:forEach>标签,需要与el表达式联合使⽤<c:forEach>标签的语法定义如下所⽰。
<c:forEach var="每个变量名字" items="要迭代的list" varStatus="每个对象的状态" begin="循环从哪⼉开始" end="循环到哪⼉结束" step="循环的步长">循环要输出的东西</c:forEach><c:forEach>标签具有以下⼀些属性:l var:迭代参数的名称。
在迭代体中可以使⽤的变量的名称,⽤来表⽰每⼀个迭代变量。
类型为String。
l items:要进⾏迭代的集合。
对于它所⽀持的类型将在下⾯进⾏讲解。
l varStatus:迭代变量的名称,⽤来表⽰迭代的状态,可以访问到迭代⾃⾝的信息。
l begin:如果指定了items,那么迭代就从items[begin]开始进⾏迭代;如果没有指定items,那么就从begin开始迭代。
它的类型为整数。
l end:如果指定了items,那么就在items[end]结束迭代;如果没有指定items,那么就在end结束迭代。
jstl的ifelse条件判断用法

jstl的ifelse条件判断⽤法jstl的if else条件判断⽤法⼀、例⼦<c:choose><c:when test="${userInfo.cardPhoto1 != null && userInfo.cardPhoto1 != '' }"><img src="<%=ProjectConfig.getFileServers()%>${userInfo.cardPhoto1} " onerror="javascript:this.src='imgs/ic_pic_l.png';" style="padding:0px;width: 197px;height: 122px;cursor:pointer;"/></c:when><c:otherwise><img src="imgs/ic_jiahao.png" style="cursor:pointer;"/></c:otherwise></c:choose>⼆、jsp EL表达式和JSTL标签条件判断的四种⽤法1.条件运算符${user.gender==1?'男':'⼥'}2.if()<c:if test="${2>1}">code..</c:if>code会在test属性为true时执⾏3.if()-else{}<c:choose> <c:when test="${2>1}">code..</c:when> <c:otherwise>code..</c:otherwise></c:choose>4.if()-else if()-else{}<c:choose> <c:when test="${2>1}">code..</c:when> <c:when test="${2>3}">code..</c:when> <c:otherwise>code..</c:otherwise></c:choose>注意,第⼆个when标签只有在第⼀个条件不满⾜,满⾜第⼆个条件时执⾏。
实验四:EL表达式和JSTL标签库的使用复习进程

实验四:EL表达式和JSTL标签库的使用一、实验的目的(1)掌握EL表达式的使用。
(2)掌握JSTL标签库的使用。
二、实验内容与要求(1)学习EL表达式的原理和使用。
(2)了解JSTL标签库的原理及使用。
(3)EL实例的调试。
(4)JSTL实例的调试。
三、实验主要步骤1. EL表达式实例程序的调试(1)源代码el.jsp<%@ page language="java" import="java.util.*" pageEncoding="GBK"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>My JSP 'el.jsp' starting page</title></head><body>45+36=${45+36}<br/><%=pageContext.getAttributesScope("info") %><br/>${info}<br/>ID:${user.id}<br/>ID:${er.id}<br>ID:${user[id]}<br/>name:${}<br/>age:${user.age}<br/>salary:${user.salary}空么?= ${empty user }><br/>Age>20:${user.age>=20 }<br/>ID is empty:${empty user.id }<br/></body></html>(2)源代码employeemain.jsp<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%> <%@ taglib uri="/jsp/jstl/core" prefix="c"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>员工管理主菜单</title></head><body><h1>员工列表</h1><hr/><table width="100%" border="1"><tr bgcolor="#99FFFF"><td width="14%">编号</td><td width="14%">姓名</td><td width="14%">性别</td><td width="14%">省份</td><td width="14%">城市</td><td width="14%">民族</td><td width="20%">操作</td></tr><c:forEach var="emp" items="${emplist}"><tr><td width="14%"><a href="toview.do?id=${emp.stu_id}">${emp.stu_name }</a></td> <td width="14%">${emp.stu_id}</td> <td width="14%">${emp.sex}</td><td width="14%">${emp.province}</td><tdwidth="14%">${emp.area}</td><td width="14%">${emp.nation}</td><td width="20%"><a href="toModofy.do?id=${emp.stu_id}">修改</a><a href="toDelete.do?id=${emp.stu_id}">删除</a></td></tr> </c:forEach></table></body></html>运行结果截图:2. JSTL标签库的使用程序实例的调试(1)源代码fmt02.jsp<%@ taglib uri="/jsp/jstl/core" prefix="c" %><html><head><title>JSTL日期格式案例</title></head><body><h1>JSTL日期格式标记</h1><hr><jsp:useBean id="now" class="java.util.Date"></jsp:useBean><fmt:setLocale value="zh_CN"/>full格式日期:<fmt:formatDate value="${now}" type="both" dateStyle="full" timeStyle="full"/><br> long格式日期:<fmt:formatDate value="${now}" type="both" dateStyle="long" timeStyle="long"/><br>medium格式日期:<fmt:formatDate value="${now}" type="both" dateStyle="medium"timeStyle="medium"/><br>default格式日期:<fmt:formatDate value="${now}" type="both" dateStyle="default" timeStyle="default"/> <br>short格式日期:<fmt:formatDate value="${now}" type="both" dateStyle="short" timeStyle="short"/><br> <hr></body></html>运行结果截图:(2)源代码jstl01.jsp<%@ page language="java" import="java.util.*" pageEncoding="GBK"%><%@ taglib uri="/jsp/jstl/core" prefix="c" %><%@ taglib uri="/jsp/jstl/fmt" prefix="fmt" %><%@ taglib uri="/jsp/jstl/sql" prefix="sql" %><%@ taglib uri="/jsp/jstl/xml" prefix="x" %><%@ taglib uri="/jsp/jstl/functions" prefix="fn" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>JSTL应用</title></head><body><h1>c:forTokens标记使用</h1><hr/><c:set var="infos" value="10,30,40,50,60" /><c:forTokens items="${infos}" delims="," var="info" varStatus="status"><c:out value="${status.index}" />-<c:out value="${status.count}" />-<c:out value="${info}" /><br/></c:forTokens><hr/></body></html>运行截图:(3)源代码sql01.jsp<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib uri="/jsp/jstl/core" prefix="c" %><%@ taglib uri="/jsp/jstl/fmt" prefix="fmt" %><%@ taglib uri="/jsp/jstl/sql" prefix="sql" %><%@ taglib uri="/jsp/jstl/xml" prefix="x" %><%@ taglib uri="/jsp/jstl/functions" prefix="fn" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>使用JSTL SQL标记</title></head><body><sql:setDataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/student" user="root" password="root" var="infoData" scope="request" /><sql:query sql="select * from stuinfo" dataSource="${infoData}" var="emplist"scope="request"> </sql:query><h1>员工列表</h1><hr/><table width="100%" border="1"><tr bgcolor="#99FFFF"><td >编号</td><td width="14%">姓名</td><td width="14%">性别</td><td width="14%">省份</td><td width="14%">城市</td><td width="14%">民族</td><td width="20%">操作</td></tr><c:forEach var="row" items="${emplist.rows}"><tr><td width="14%"><a href="toview.do?id=${row.stu_id}">${row.stu_name }</a></td> <td width="14%">${row.stu_id}</td><td width="14%">${row.sex}</td><td width="14%">${row.province}</td><td width="14%">${row.area}</td><td width="14%">${row.nation}</td><td width="20%"><a href="toModofy.do?id=${row.empid}">修改</a><a href="toDelete.do?id=${row.empid}">删除</a></td></tr></c:forEach></table><hr/></body></html>运行截图:四、结论与体会EL表达式的目的是使用简洁的语法来替代jsp的表达式脚本<%=表达式%>,在jsp页面中输出动态的内容。
jstl 中 if语句的使用

jstl 中if语句的使用JSTL(JavaServer Pages Standard Tag Library)是用于在JSP页面中嵌入Java 逻辑的标准标签库。
在JSTL中,有一个<c:if>标签可以用于条件判断和控制页面的显示。
<c:if>标签有三个常用的属性:test、var和scope。
1. test属性:用于定义条件表达式,只有当条件表达式为真(true)时,<c:if>标签中的内容才会被执行。
可以使用JSP中的EL表达式作为条件,例如:<c:if test="{age > 18}"><! 显示内容></c:if>2. var属性:用于定义一个变量,该变量会被赋值为布尔型的条件表达式的值。
例如:<c:if test="{age > 18}" var="isAdult"><! 当age大于18时,isAdult的值为true ></c:if>3. scope属性:用于指定变量的作用域,默认为page。
可以选择的作用域包括page(页面)、request(请求)、session(会话)、application(应用程序)。
例如:<c:if test="{age > 18}" var="isAdult" scope="request"><! 当age大于18时,在request作用域中创建变量isAdult ></c:if>示例:<c:if test="{age > 18}"><p>已成年</p></c:if><c:if test="{age <= 18}"><p>未成年</p></c:if>这个示例中,如果age大于18,则显示"已成年";如果age小于等于18,则显示"未成年"。
jstl 三目运算符

jstl 三目运算符在Java的JSP开发中,我们经常会使用JSTL(JavaServer Pages Standard Tag Library)来简化页面的开发和管理。
而其中一个非常有用的功能就是三目运算符。
三目运算符是一种条件表达式,由三个操作数组成,通常用于简化条件判断和赋值操作。
在JSTL中,我们可以使用三目运算符来实现动态控制页面显示内容的功能。
以一个简单的例子来说明。
假设我们有一个变量age,表示用户的年龄。
我们需要根据不同年龄段来显示不同的提示信息。
如果年龄小于18岁,则显示"未成年人禁止入内",否则显示"欢迎光临"。
使用JSTL的三目运算符,我们可以这样实现:```<c:set var="age" value="20" /><c:out value="${age < 18 ? '未成年人禁止入内' : '欢迎光临'}" />```在上面的代码中,我们首先使用`<c:set>`标签设置了一个名为age的变量,并赋值为20。
然后使用`<c:out>`标签输出了一个表达式的值。
在表达式`${age < 18 ? '未成年人禁止入内' : '欢迎光临'}`中,我们使用了三目运算符。
它的意思是,如果age小于18,则返回"未成年人禁止入内",否则返回"欢迎光临"。
通过这样的方式,我们可以根据不同的条件来动态的显示页面内容。
这在实际的开发中非常有用,特别是当我们需要根据用户的权限、状态或其他条件来进行页面控制时。
除了上述的简单用法之外,三目运算符在JSTL中还可以与其他标签结合使用,实现更复杂的逻辑。
比如,我们可以用它来判断是否显示某个按钮、是否禁用某个输入框等。
jstl中foreach用法

jstl中foreach用法一、JSTL中forEach的基本用法1. 在JSP页面中使用JSTL的forEach标签就像拥有了一个魔法棒,它能轻松地遍历集合。
比如说,你有一个存放着学生名字的List,就像一个装满宝贝的盒子。
`<c:forEach var="studentName"items="${studentNameList}">`,这里的`var`就像是给每个从盒子里拿出来的宝贝取个临时名字,`items`就是那个装满宝贝(学生名字)的盒子(集合)。
2. 假设你是一个图书管理员,有一个书架(数组)放着各种各样的书。
在JSTL中,你可以这样用forEach遍历这个书架。
`<c:forEachvar="book" begin="0" end="${bookArray.length - 1}">`,这里的`begin`和`end`就像是你从书架的第几本开始看,到第几本结束看,是不是很方便呢?3. 如果你的集合是一个Map,那forEach标签也能搞定。
这就好比你有一个装满各种水果和它们数量的篮子(Map),`<c:forEachvar="entry" items="${fruitMap}">`,这里的`entry`就是这个篮子里的每一组水果和数量的组合。
4. 想象一下,你有一个装满彩色珠子(字符串元素)的罐子(List)。
在JSP中,你可以用`<c:forEach var="bead"items="${beadList}">${bead}</c:forEach>`轻松地把每个珠子(字符串)拿出来展示,就像把罐子里的珠子一个一个摆在桌子上。
5. 好比你有一组朋友的年龄存放在一个数组里,就像一串数字挂在绳子上。
jstl和el的简答题
jstl和el的简答题JSTL(JavaServer Pages Standard Tag Library)和EL (Expression Language)是在Java Web开发中常用的两种技术。
JSTL是一组自定义标签,用于简化在JSP页面中的Java代码编写。
它提供了一系列的标签,用于处理逻辑控制、迭代、条件判断、格式化等常见的页面操作。
通过使用JSTL,我们可以将复杂的Java代码转换为更简洁、易读的标签形式,提高代码的可维护性和可读性。
EL是一种表达式语言,用于在JSP页面中访问和操作数据。
它提供了一种简洁的语法,可以直接在页面中使用表达式来获取和展示数据,而不需要编写大量的Java代码。
EL支持访问JavaBean属性、数组、集合、映射等各种数据结构,并提供了一些常用的运算符和函数,方便在页面中进行数据处理和展示。
从多个角度来看,JSTL和EL的优点和用途如下:1. 简化开发,JSTL通过提供一组标签,使得开发人员可以更方便地进行逻辑控制、数据展示等操作,减少了繁琐的Java代码编写,提高了开发效率。
2. 提高可读性,使用JSTL和EL可以将复杂的Java代码转换为简洁的标签和表达式,使得页面代码更加清晰易读,降低了理解和维护的难度。
3. 代码重用,JSTL提供了一些常用的功能标签,如循环、条件判断、格式化等,可以在不同的页面中重复使用,减少了代码的冗余和重复编写。
4. 分离关注点,通过使用JSTL和EL,可以将页面展示逻辑和业务逻辑分离,使得页面更关注于展示数据而不是处理数据,提高了代码的可维护性和可测试性。
5. 跨平台兼容性,JSTL和EL是Java Web标准的一部分,可以在不同的Java Web容器中使用,保证了代码的可移植性和跨平台兼容性。
总结起来,JSTL和EL是在Java Web开发中常用的技术,它们通过提供一组标签和表达式,简化了页面开发和数据操作,提高了代码的可读性和可维护性。
jstl用法
JSTL用法一、什么是JSTLJavaServer Pages Standard Tag Library(JSTL)是一个JSP规范的标准标签库,它为JSP页面提供了一组标签和函数,用于简化JSP页面的开发和维护。
JSTL提供了核心标签库、格式化标签库、SQL标签库和XML标签库等,可以帮助开发者更方便地处理数据、格式化输出、执行SQL查询和处理XML数据等任务。
二、JSTL的引入要使用JSTL,首先需要在项目中引入JSTL的相关依赖。
在Maven项目中,可以通过在pom.xml文件中添加以下依赖来引入JSTL:<dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency>引入依赖后,就可以在JSP页面中使用JSTL的标签了。
三、核心标签库1. <c:out>标签<c:out>标签用于输出表达式的值,可以防止XSS攻击。
它的使用方式如下:<c:out value="${expression}" />其中,expression是一个JSP表达式,可以是一个变量、一个属性或者一个EL表达式。
<c:out>标签会将expression的值进行HTML转义,以防止恶意代码注入。
2. <c:set>标签<c:set>标签用于设置一个变量的值,可以在JSP页面中使用这个变量。
它的使用方式如下:<c:set var="variableName" value="expression" />其中,variableName是变量的名称,expression是一个JSP表达式,用于给变量赋值。
jstl中的foreach语法,并举例说明
jstl中的foreach语法,并举例说明JSTL(JSP Standard Tag Library)是一种为JSP页面提供标签库的技术,它简化了在JSP页面中使用条件判断和循环的操作。
在JSTL中,<c:forEach>是一个非常常用的标签,用于在JSP页面中遍历集合或数组。
一、<c:forEach>标签的基本语法 <c:forEach>标签有以下几个基本的属性: - var:指定集合中的当前元素的变量名。
- items:指定要遍历的集合或数组。
- begin、end、step:可选属性,用于指定遍历的起始位置、结束位置和步长。
- varStatus:可选属性,指定一个变量名用于保存每一次循环的状态信息。
下面是<c:forEach>标签的基本语法: ```xml<c:forEach var="item" items="${collection}"><!-- 在此处使用变量 ${item} --> </c:forEach> ```二、使用<c:forEach>标签的示例为了更好地理解<c:forEach>标签的使用,我们来看一个例子。
假设有一个名为“students”的List,其中包含了多个学生对象。
每个学生对象包含有学生的姓名、年龄和性别。
我们希望在JSP页面中显示出每个学生的信息。
首先,我们需要将学生对象的List传递给JSP页面,可以使用EL表达式将List存储在一个名为“students”的变量中: ```java List<Student> students = newArrayList<>(); // 添加学生对象到List中...request.setAttribute("students", students); ```然后,在JSP页面中使用<c:forEach>标签遍历“students”集合中的每个学生对象,并显示出姓名、年龄和性别: ```xml <table> <thead> <tr> <th>姓名</th> <th>年龄</th><th>性别</th> </tr> </thead><tbody> <c:forEach var="student"items="${students}"> <tr><td>${}</td><td>${student.age}</td><td>${student.gender}</td> </tr></c:forEach> </tbody> </table> ```在上面的示例中,<c:forEach>标签的var属性设置为“student”,items属性设置为“${students}”,表明它遍历的是名为“students”的变量,即我们传递给JSP页面的学生对象的List。
Jstl标签c:if的用法
Jstl标签c:if的⽤法<c:if> 标签必须要有test属性,当test中的表达式结果为true时,则会执⾏本体内容;如果为false,则不会执⾏。
例如:${ername = = 'admin'},如果ername等admin时,结果为true;若它的内容不等于admin时,则为false。
于 接下来看下列的范例: <c:if test="${ername = = 'admin' }"> ADMIN您好!! //body部分 </c:if> 如果名称等于admin,则会显⽰"ADMIN您好!! "的动作,如果相反,则不会执⾏<c:if>的body部分,所以不会显⽰"ADMIN 您好!! //body部分"。
另外<c:if>的本体内容除了能放纯⽂字,还可以放任何JSP程序代码(Scriptlet)、JSP 标签或者HTML码。
除了test属性之外,<c:if>还有另外两个属性var和scope。
当我们执⾏<c:if>的时候,可以将这次判断后的结果存放到属性var⾥;scope则是设定var的属性范围。
哪些情况才会⽤到var和 scope这两个属性呢?例如:当表达式过长时,我们会希望拆开处理,或是之后还须使⽤此结果时,也可以⽤它先将结果暂时保留,以便⽇后使⽤。
例⼦:<%String amind="Admin";request.setAttribute("amind",amind);%><c:if test="${requestScope.amind=='Admin'}" var="condition" scope="request"> 您好Admin先⽣ </c:if>。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
JSTL标签库的使用是为类弥补html表的不足,规范自定义标签的使用而诞生的。
在告别modle1模式开发应用程序后,人们开始注重软件的分层设计,不希望在jsp页面中出现java逻辑代码,同时也由于自定义标签的开发难度较大和不利于技术标准化产生了自定义标签库。
JSTL标签库可分为5类:❑核心标签库❑I18N格式化标签库❑SQL标签库❑XML标签库❑函数标签库本章将对这些内容一一讲述。
9.1 核心标签库JSTL的核心标签库标签共13个,从功能上可以分为4类:表达式控制标签、流程控制标签、循环标签、URL操作标签。
使用这些标签能够完成JSP页面的基本功能,减少编码工作。
(1)表达式控制标签:out标签、set标签、remove标签、catch标签。
(2)流程控制标签:if标签、choose标签、when标签、otherwise标签。
(3)循环标签:forEach标签、forTokens标签。
(4)URL操作标签:import标签、url标签、redirect标签。
在JSP页面引入核心标签库的代码为:<%@ taglib prefix="c" uri="/jsp/jstl/core" %>下面将按照功能分类,分别讲解每个标签的功能和使用方式。
9.2.1 表达式控制标签表达式控制分类中包括<c:out>、<c:set>、<c:remove>、<c:chtch>4个标签,现在分别介绍它们的功能和语法。
1.<c:out>标签【功能】:用来显示数据对象(字符串、表达式)的内容或结果。
在使用Java脚本输出时常使用的方式为:<% out.println(“字符串”)%><%=表达式%>在web开发中,为了避免暴露逻辑代码会尽量减少页面中的Java脚本,使用<c:out>标签就可以实现以上功能。
<c:out value=”字符串”><c:out value=”EL表达式”>提示:JSTL的使用是和EL表达式分不开的,EL表达式虽然可以直接将结果返回给页面,但有时得到的结果为空,<c:out>有特定的结果处理功能,EL的单独使用会降低程序的易读性,建议把EL的结果输入放入<c:out>标签中。
<c:out>标签的使用有两种语法格式。
【语法1】:<c:out value=”要显示的数据对象” [escapeXml=”true|false”] [default=”默认值”]>【语法2】:<c:out value=”要显示的数据对象” [escapeXml=”true|false”]>默认值</c:out>这两种方式没有本质的区别,只是格式上的差别。
标签的属性介绍如下。
❑value:指定要输出的变量或表达式。
❑escapeXml:设定是否转换特殊字符(如<、>等一些转义字符),在默认值为true的情况下直接在输出<的,如果改为false将会进行转义输出“<”等。
❑default:为默认输出结果。
如果使用表达式得到的结果为null(注意与空区别),将会输出默认结果。
【示例代码】:代码9.1演示了<c:out>的使用,以及在不同属性值状态下的结果。
代码9.1 <c:out>标签使用示例:coredemo01.jsp1 <%@ page pageEncoding="gbk" %>2 <%@ taglib prefix="c" uri="/jsp/jstl/core" %>3 <html>4 <head>5 <title>out标签的使用</title>6 </head>7 <body>8 <li>(1)<c:out value="北京源智天下科技有限公司"></c:out></li>9 <li>(2)<c:out value="<未使用字符转义>" /></li>10 <li>(3)<c:out value="<使用字符转义>" escapeXml="false"></c:out></li>11 <li>(4)<c:out value="${null}">使用了默认值</c:out></li>12 <li>(5)<c:out value="${null}"></c:out></li>13 </body>14 </html>【代码解析】:(1)第8行为<c:out>的value属性赋值为字符串。
(2)第9行和第10行对比,在改变escapeXml属性后页面输出的转义字符。
(3)第11行value得到null,如果方法体内有值,将输出方法体中的字符串,否则不输出,第12行没有输出结果。
程序运行结果如图9.1所示。
图9.1 coredemo01.jsp运行结果【代码解析】:(1)直接输出了一个字符串。
(2)字符串中有转义字符,但在默认情况下没有转换。
(3)使用了转义字符<和>分别转换成<和>符号。
(4)设定了默认值,从EL表达式${null}得到空值,所以直接输出设定的默认值。
(5)未设定默认值,输出结果为空。
2.<c:set>标签功能:主要用于将变量存取于JSP范围中或JavaBean属性中。
<c:set>标签的编写共有4种语法格式。
语法1:存值,把一个值放在指定(page、session等)的map中。
<c:set value=”值1” var=”name1” [scope=”page|request|session|application”]>含义:把一个变量名为name1值为“值1”的变量存储在指定的scope范围内。
语法2:<c:set var=”name2” [scope=”page|request|session|application”]>值2</c:set>含义:把一个变量名为name2,值为值2的变量存储在指定的scope范围内。
语法3:<c:set value=”值3” target=”JavaBean对象” property=”属性名”/>含义:把一个值为“值3”赋值给指定的JavaBean的属性名。
相当与setter()方法。
语法4:<c:set target=”JavaBean对象” property=”属性名”>值4</c:set>含义:把一个值4赋值给指定的JavaBean的属性名。
提示:从共能上分语法1和语法2、语法3和语法4的效果是一样的只是把value值放置的位置不同至于使用那个根据个人的喜爱,语法1和语法2是向scope范围内存储一个值,语法3和语法4是给指定的JavaBean赋值。
【示例代码】:代码给出了给指定scope范围赋值的示例。
使用<c:set>标签把值放入session、appli cation对象中。
同时使用EL表达式得到存入的值。
代码9.2 使用<c:set>存取值:coredemo02.jsp1 <%@ page language="java" pageEncoding="gbk"%>2 <%@ taglib prefix="c" uri="/jsp/jstl/core" %>3 <html>4 <head>5 <title>set标签的使用</title>6 </head>7 <body>8 <li>把一个值放入session中。
<c:set value="coo" var="name1" scope="session"></c:se t>9 <li>从session中得到值:${1 }10 <li>把另一个值放入application中。
<c:set var="name2" scope="application">olive</c:se t>11 <li> 使用out标签和EL表达式嵌套得到值:12 <c:out value="${2}">未得到name的值</c:out></li>13 <li>未指定scope的范围,会从不同的范围内查找得到相应的值:${name1 }、${name2 }14 </body>15 </html>【代码解析】:(1)第8行通过<c:set>标签将值name1的值放入session范围中。
(2)第9行使用EL表达式得到name1的值。
(3)第10行把name2放入application范围中。
(4)第11行使用EL表达式从application范围中取值,用<c:out>标签输出使得页面规范化。
(5)第13行不指定范围使用EL自动查找得到值。
程序运行的结果如图9.2所示。
图9.2 coredemo02.jsp在代码中未使用任何Java脚本使用程序的功能。
为了对比期间,代码9.3给出了使用Java脚本实现以上功能的例子。
代码9.3 Java脚本实现值的存取:getvalue.jsp1 <%@page language="java" pageEncoding="gbk"%>2 <html>3 <head>4 <title>set标签的使用</title>5 </head>6 <body>7 <li>把一个值放入session中。