首页 > 编程笔记 > Java笔记

JSP JSTL <c:set>标签:设置标签

<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> 标签各属性的详细介绍如表所示。

<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="新宝库"scope="page"/>
  <c:set var="hostpage" value="www.xinbaoku.com" 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

所有教程

优秀文章