<c:set>标签
使用<c:set>标签设置域对象中某个属性的值时,可以通过两种方式,一是通过<c:set>的value属性设置域对象中属性的值,二是通过<c:set>标签体设置域对象中属性的值,这两种方式可以实现相同的效果,如例1所示。
例1 c_set1.jsp
1 <%@ page language="java" contentType="text/html;
2 charset=utf-8" pageEncoding="utf-8"%>
3 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
4 <html>
5 <head></head>
6 <body>
7 session域中userName属性的值为:
8 <c:set var="userName" value="itcast" scope="session" />
9 <c:out value="${userName}" /><hr>
10 session域中bookName属性的值为:
11 <c:set var="bookName" scope="session">
12 Java Web
13 </c:set>
14 <c:out value="${bookName}" />
15 </body>
16 </html>
打开IE浏览器,在地址栏中输入http://localhost:8080/chapter08/c_set1.jsp
访问c_set1.jsp页面,此时,浏览器窗口中显示的结果如图1所示。
图1 c_set1.jsp
从图1可以看到,浏览器中输出了session域中userName属性和bookName属性的值。这是由于在例8-4中分别通过<c:set>标签的value属性和标签主体在session中将userName的值设置为itcast,bookName的值设置为Java Web,因此,在浏览器中便会输出session域中这两个属性的值。
2、使用标签设置UserBean对象和Map对象中某个属性的值
在使用<c:set>标签设置UserBean对象中某个属性的值之前,需要先创建一个User.java程序,用于封装一个User对象,如例2所示。
例2 User.java
1 package cn.itcast.chapter08.entity;
2 public class User {
3 private String username;
4 private String password;
5 public String getUsername() {
6 return username;
7 }
8 public void setUsername(String username) {
9 this.username = username;
10 }
11 public String getPassword() {
12 return password;
13 }
14 public void setPassword(String password) {
15 this.password = password;
16 }
17 }
接下来在chapter08工程的WebContent根目录中,编写一个c_set2.jsp文件,在该文件中使用<c:set>标签设置User对象的username属性和password属性的值,以及设置Map集合某个属性的值,如例3所示。
例3 c_set2.jsp
1 <%@ page language="java" contentType="text/html; charset=utf-8"
2 pageEncoding="utf-8" import="java.util.*"%>
3 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
4 <html>
5 <head></head>
6 <body>
7 <jsp:useBean id="user" class="cn.itcast.chapter08.entity.User"/>
8 <c:set value="itcast" target="${user}" property="username" />
9 User对象的username属性的值为:<c:out value="${user.username}" /><br>
10 <c:set value="123" target="${user}" property="password" />
11 User对象的password属性的值为:<c:out value="${user.password}" /><hr>
12 <%
13 HashMap map = new HashMap();
14 request.setAttribute("preferences",map);
15 %>
16 <c:set target="${preferences }" property="color" value="green" />
17 Map对象中color关键字的值为:<c:out value="${preferences.color}" />
18 </body>
19 </html>
打开IE浏览器,在地址栏中输入http://localhost:8080/chapter08/c_set2.jsp
访问c_set2.jsp页面,此时,浏览器窗口中显示的结果如图8-8所示。
图2 c_set2.jsp
从图2可以看出,浏览器中输出了User对象相关属性的值以及Map对象中color关键字的值。这是由于例3中,将<c:set>标签的target属性指定为要设置的User对象,并使用property将username设置为属性,使用value将username属性的值设置为itcast,同理password属性也是这样设置的,这样便完成了设置User对象属性的功能。而对于Map对象来说,首先需要定义一个Map集合,然后在通过target属性将Map集合指定为要设置属性的对象,并将color属性的值设置为green,这样便完成了Map集合属性的设置。