获取JavaBean的属性(附带实例)
在 JavaBean 类中,为了防止外部对象直接调用 JavaBean 属性,通常将 JavaBean 中的属性设置为私有的。但同时需要为属性提供公共的访问方法,也就是 getter() 方法。
<jsp:useBean> 标记用于在指定的作用域范围内查找指定名称的 JavaBean 类实例化的对象:
<jsp:useBean> 的语法形式如下:
<jsp:getProperty> 标记用于读取 JavaBean 实例化对象的属性,也就是调用 JavaBean 对象的 getter() 方法。然后将其读取的属性值转换成字符串后插入输出的响应正文中。
<jsp:getProperty> 的语法形式如下:
【实例】在 JSP 页面中显示 JavaBean 对象的属性信息。
首先创建名称为 Person 的 JavaBean 类。在 Person 类中创建所需属性,并提供相应的 getter() 方法和 setter() 方法。核心代码如下:
然后创建 JSP 页面 Person.jsp。在该页面中通过 JSP 的动作标记来获取 JavaBean 对象的属性信息。核心代码如下:
在 JSP 页面中,主要通过 <jsp:useBean> 标记实例化 Person 类的 JavaBean 对象,然后使用 <jsp:getProperty> 标记获取 JavaBean 对象中的属性信息,其页面运行效果如下图所示。
<jsp:useBean> 标记用于在指定的作用域范围内查找指定名称的 JavaBean 类实例化的对象:
- 如果存在,则直接返回该 JavaBean 对象的引用;
- 如果不存在,则实例化一个新的 JavaBean 对象,并将它以指定的名称存储到指定的作用域范围中。
<jsp:useBean> 的语法形式如下:
<jsp:useBean id="beanName" class="package.class" scope="page|request|session|application"/>
- id 属性用于指定 JavaBean 实例化对象的引用名称和其存储在作用域范围中的名称;
- class 属性用于指定 JavaBean 类的完整类名(即必须带有包名的类名);
- scope 属性用于指定 JavaBean 实例化对象所存储的作用域范围只能是 page、request、session 和 application 4 个值中的 1 个,其默认值为 page。
<jsp:getProperty> 标记用于读取 JavaBean 实例化对象的属性,也就是调用 JavaBean 对象的 getter() 方法。然后将其读取的属性值转换成字符串后插入输出的响应正文中。
<jsp:getProperty> 的语法形式如下:
<jsp:getProperty name="beanInstanceName" property="PropertyName" />
- name 属性用于指定 JavaBean 实例化对象的名称,其值应与 <jsp:useBean> 标记的 id 属性值相同;
- property 属性用于指定 JavaBean 实例化对象的属性名。
【实例】在 JSP 页面中显示 JavaBean 对象的属性信息。
首先创建名称为 Person 的 JavaBean 类。在 Person 类中创建所需属性,并提供相应的 getter() 方法和 setter() 方法。核心代码如下:
/** * Person 类就是一个简单的 JavaBean */ public class Person { // ------------------ Person 类封装的私有属性 ------------------------------ /** 姓名,String 类型 */ private String name = "SimpleLee"; /** 性别,String 类型 */ private String sex = "女"; /** 年龄,int 类型 */ private int age = 30; /** 是否已婚,boolean 类型 */ private boolean married = true; // ------------------ 构造方法 ------------------------------------------ /** * 无参数构造方法 */ public Person() { } // ------------------ 对外提供的用于访问私有属性的方法 ---------------------- public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } // 修正方法名拼写:getMaried → getMarried public boolean getMarried() { return married; } public void setMarried(boolean married) { this.married = married; } }
然后创建 JSP 页面 Person.jsp。在该页面中通过 JSP 的动作标记来获取 JavaBean 对象的属性信息。核心代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>PersonJSP</title> </head> <body> <jsp:useBean id="person" class="jspSamples.unit5.javaBeanSamples.Person" scope="page" /> <div> <ul> <li>姓名:<jsp:getProperty property="name" name="person"/></li> <li>性别:<jsp:getProperty property="sex" name="person"/></li> <li>年龄:<jsp:getProperty property="age" name="person"/></li> <li>已婚:<jsp:getProperty property="married" name="person"/></li> </ul> </div> </body> </html>
在 JSP 页面中,主要通过 <jsp:useBean> 标记实例化 Person 类的 JavaBean 对象,然后使用 <jsp:getProperty> 标记获取 JavaBean 对象中的属性信息,其页面运行效果如下图所示。
