一、c:set的基本用法
c:set用于给变量赋值,可以在JSP页面中使用EL表达式获取该变量的值。
<c:set var="name" value="Alice" />
<p>${name}</p> //输出Alice
上述代码中,c:set标签给变量name赋值为Alice,然后通过EL表达式${name}
输出该变量的值。
c:set还可以通过target属性指定作用域范围,默认为page。
<c:set var="name" value="Alice" target="session" />
上述代码中,c:set标签将变量name的值存在session作用域中。
二、c:set的常用属性
1. value属性
value属性用于指定变量的值,可以是字符串、数值、布尔值、表达式等。
<c:set var="age" value="18" />
<p>${age}</p> //输出18
2. target属性
target属性用于指定变量存储的作用域。
<c:set var="name" value="Alice" target="session" />
<p>${sessionScope.name}</p> //输出Alice
3. scope属性
scope属性可以替代target属性,用于指定变量存储的作用域。
<c:set var="name" value="Alice" scope="session" />
<p>${sessionScope.name}</p> //输出Alice
4. property属性
property属性用于指定JavaBean的属性,并将其值存储到变量中。
<jsp:useBean id="user" class="com.example.User" scope="request" />
<c:set var="name" value="${user.name}" property="name" />
<p>${name}</p> //输出User的name属性值
5. var属性
var属性用于指定变量名。
<c:set var="age" value="18" />
<p>${age}</p> //输出18
三、c:set的高级用法
1. c:set和c:if共同使用
c:set和c:if可以结合使用,根据条件给变量赋值。
<c:if test="${param.gender eq 'male'}">
<c:set var="gender" value="男" />
</c:if>
<c:if test="${param.gender eq 'female'}">
<c:set var="gender" value="女" />
</c:if>
<p>性别:${gender}</p>
上述代码根据param中的gender参数值,将gender变量赋值为男或女。
2. c:set和c:forEach共同使用
c:set和c:forEach可以结合使用,根据循环的值给变量赋值。
<c:forEach var="i" begin="1" end="5">
<c:set var="sum" value="${sum + i}" />
</c:forEach>
<p>总和:${sum}</p>
上述代码计算1到5的总和,并将结果存储到sum变量中。
3. c:set和c:import共同使用
c:set和c:import可以结合使用,从导入的JSP页面中获取值并存储到变量中。
<c:import url="getData.jsp" var="data" />
<c:set var="name" value="${data.name}" />
<p>姓名:${name}</p>
上述代码从getData.jsp中获取name值,并将其存储到name变量中。
四、小结
c:set是JSP标签库中非常常用的一个标签,可以方便地给变量赋值,并且可以指定变量存储的作用域。 除此之外,c:set可以和其他标签结合使用,实现更多的功能,比如根据条件给变量赋值、循环后计算值、从其他页面获取值等。