<jsp:getProperty>标签
为了获取JavaBean的属性值,JSP规范提供了<jsp:getProperty>标签,它可以访问JavaBean的属性,并把属性的值转换成一个字符串发送到响应输出流中。如果JavaBean的属性值是一个引用数据类型的对象,<jsp:getProperty>标签会调用该对象的toString()方法,如果JavaBean的属性值为null,<jsp:getProperty>标签将会输出字符串“null”。<jsp:getProperty>标签的语法格式如下所示:
<jsp:getProperty name="beanInstanceName" property="PropertyName" />
从上面的语法格式中可以看出,<jsp:getProperty>标签中有2个属性,其含义具体如下所示:
●name:用于指定JavaBean实例对象的名称,其值应该和<jsp:useBean>标签的id属性值相同
●property:用于指定JavaBean实例对象的属性名
需要注意的是,在使用<jsp:getProperty>标签时,它的name属性和property属性都必须设置,不能省略。
至此,用于在JSP页面中操作JavaBean的三个标签都学习完了。为了让初学者更好的掌握这三个标签,接下来编写一个案例,在这个案例中将<jsp:useBean>、<jsp:setProperty>和<jsp:getProperty>这三个标签配合使用,其步骤如下所示。
(1)编写JavaBean类User,在User类中定义name、gender、education和email四个可读写属性,具体如例1所示。
例1 User.java
1 package cn.itcast.chapter08.javabean;
2 public class User {
3 private String name;
4 private String gender;
5 private String education;
6 private String email;
7 public String getName() {
8 return name;
9 }
10 public void setName(String name) {
11 this.name = name;
12 }
13 public String getGender() {
14 return gender;
15 }
16 public void setGender(String gender) {
17 this.gender = gender;
18 }
19 public String getEducation() {
20 return education;
21 }
22 public void setEducation(String education) {
23 this.education = education;
24 }
25 public String getEmail() {
26 return email;
27 }
28 public void setEmail(String email) {
29 this.email = email;
30 }
31 }
(2)编写注册表单页面login.jsp用于填写用户信息,具体如例2所示。
例2 login.jsp
1 <%@ page language="java" pageEncoding="GBK"%>
2 <html>
3 <head>
4 <title>注册信息</title>
5 </head>
6 <body>
7 <form action="/chapter08/userInfo.jsp" method="post">
8 姓名:<input type="text" name="name" /> <br />
9 性别:<input type="radio" name="gender" value="man" checked="checked" />man
10 <input type="radio" name="gender" value="woman" />woman <br/>
11 学历:<select name="education">
12 <option value="select">请选择</option>
13 <option value="high_school_student">high_school_student</option>
14 <option value="undergraduate">undergraduate</option>
15 <option value="graduate">graduate</option>
16 <option value="doctor">doctor</option>
17 </select> <br/>
18 邮箱:<input type="text" name="mail" /> <br />
19 <input type="submit" value="提交"/>
20 </form>
21 </body>
22 </html>
需要注意的是,例2中的表单项名称name、性别gender、学历education与User对象的属性名称一致,而邮箱名称mail与User对象的属性名称不一致。
(3)编写处理表单的页面userInfo.jsp,在userInfo.jsp中使用三个标签将表单提交信息封装到一个User对象中,同时将这些信息在浏览器页面显示出来。userInfo.jsp文件如例3所示。
例3 userInfo.jsp
1 <%@ page language="java" pageEncoding="GBK"%>
2 <html>
3 <head>
4 <title>用户信息</title>
5 </head>
6 <body>
7 <jsp:useBean id="user" class="cn.itcast.chapter08.javabean.User" />
8 <jsp:setProperty name="user" property="*" />
9 <jsp:setProperty name="user" property="email" param="mail" />
10 姓名:<jsp:getProperty name="user" property="name" /> <br />
11 性别:<jsp:getProperty name="user" property="gender" /> <br />
12 学历:<jsp:getProperty name="user" property="education" /> <br />
13 邮箱:<jsp:getProperty name="user" property="email" />
14 </body>
15 </html>
在例3中,使用了两个<jsp:setProperty>标签,第一个标签将property属性的值设置为星号(*),它用于设置User对象中和请求参数同名的属性的值,第二个标签中设置了param属性,它将name属性值为mail的表单项传递的值赋值给User的email属性。在代码的第10行到第13行,使用四个<jsp:getProperty>标签分别获得User对象属性的值并输出到浏览器页面。
(4)在浏览器地址栏中输入URL地址http://localhost:8080/chapter08/login.jsp
访问login.jsp,并填入用户信息,浏览器显示结果如图1所示。
图1 运行结果
点击图1中的【提交】按钮,可以看到浏览器显示出了User对象四个属性的值,如图2所示。
图2 运行结果
由程序的运行结果可以看出,<jsp:useBean>、<jsp:setProperty>和<jsp:getProperty>这三个标签配合使用,成功完成了JSP标签访问JavaBean实现提交用户信息的功能。