<c:set> 标签用于定义和存储变量,它可以定义变量是在 JSP 会话范围内还是 JavaBean 的属性中,可以使用该标签在页面中定义变量,而不用在 JSP 页面中嵌入打乱 HTML 排版的 Java 代码。<:set> 标签有 3 种语法格式。
语法格式一:
<c:set var="name"[scope="page|request|session|application"]>
标签体
</c:set>
在 scope 指定的范围内将标签主体存储到变量中。
语法格式二:
<c:set value="value" target="object" property="propName"/>
将变量值存储在 target 属性指定的目标对象的 propName 属性中。
语法格式三:
<c:set target="object" property="propName">
标签体
</c:set>
将标签主体存储到 target 属性指定的目标对象的 propName 属性中。
<c:set> 标签各属性的详细介绍如表所示。
属性 | 类型 | 描述 | 引用 EL |
---|---|---|---|
value | Object | 将要存储的变量值 | 可以 |
var | String | 存储变量值的变量名称 | 不可以 |
target | Object | 存储变量值或者标签主体的目标对象,可以是JavaBean或Map集合对象 | 可以 |
property | String | 指定目标对象存储数据的属性名 | 可以 |
scope | String | 指定变量存在于JSP的范围,默认值是page | 不可以 |
示例
本示例应用 <c:set> 标签定义 page 和 session 两个范围内的变量,关键代码如下:
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> //在page范围内定义变量 <c:set var="name" value="C语言中文网"scope="page"/> <c:set var="hostpage" value="c.biancheng.net" scope="session"/>
典型应用
通过 JSTL 的 <c:set> 标签来实现“写入”的功能,自定义两个变量的作用域,分别定义为 application 和 session。
使用 <c:set> 标签定义两个变量 allCount 和 count,其中 allCount 作用域为 application,而 count 作用域为 session,页面被浏览时累加两个变量实现计数器的功能,关键代码如下:
<table align="center" cellpadding="0" cellspacing="0" bgcolor="lightblue"> <c:set var="allCount" value="${allCount+1}" scope="application"></c:set> <c:set var="count" value="${count+1}" scope="session"></c:set> <Tr><td> 今天访问本网站总人数为:${allCount}<br/> 今天您访问了此网站次数为:${count}<br/> </td></Tr> <c:set var="test" value="by value property"></c:set> <c:set var="test">by body</c:set> </table> <br/> <br/> <% request.setAttribute("user",new com.mr.bean.User()); request.setAttribute("map",new java.util.HashMap()); %> <c:set target="${user}" property="name" value="${param.name}"></c:set> ${user.name} <c:set target="${map}" property="name" value="${param.name}"/> ${map.name}
运行结果如下:
今天访问本网站总人数为:76
今天您访问了此网站次数为:102
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/22823.html