JavaBean是什么

Java 之父 James Gosling 在设计 Java 语言,为 Java 组件中封装数据的 Java 类进行命名时,看到了桌子上的咖啡豆,于是灵机一动,就把它命名为“JavaBean”。从此,"JavaBean"开始了它罪恶的一生。

定义

JavaBean 是遵守 Java API 规范的 Java类,它是一个可以重复使用的组件。
JavaBean必须满足以下三个条件:

  1. 是一个公共类,并提供公有的无参构造方法
  2. 属性必须私有化
  3. 必须有对应的get/set方法

只要是满足了以上3个要求的、是用Java语言编写的类就叫做 JavaBean。

Java示例

package com.chen.pojo;

public class People {

    private int id;
    private String name;
    private int age;
    private String address;

    public People(){

    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return "People{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", address='" + address + '\'' +
                '}';
    }
}

JavaBean 的属性

JavaBean的属性与普通Java类的属性的概念不一样JavaBean的属性是以方法定义的形式出现的。

JavaBean 的每个属性通常都具有相应的 setter 和 getter 方法,setter 方法称为属性修改器,getter 方法称为属性访问器,如下:

  1. getPropertyName()
    属性访问器以小写的 get 作为前缀,后跟属性名,且属性名的第一个字母也要改为大写。例如:属性名称为 name,则方法名称为 getName( ),用来读取该属性值。

  2. setPropertyName()
    属性修改器以小写的 set 作为前缀,后跟属性名,且属性名的第一个字母也要改为大写。例如:属性名称为 name,则方法名称为 setName( ),用来设置该属性值。

值得注意的是,JavaBean 的某个属性也可以只有 set 方法或 get 方法,这样的属性称之为只写或只读属性。

JavaBean的使用

在JSP中专门定义了三个标签:<jsp:useBean >、<jsp:setProperty >和<jsp:getProperty >,它们分别用于创建和查找JavaBean的实例对象、设置JavaBean对象的属性、读取JavaBean对象的属性。

  • <jsp:useBean >标签
<jsp:useBean id="people" class="com.chen.pojo.People" scope="page|request|session|application">

其中,id表示Bean 实例化对象的变量名,可以在指定范围内使用该变量名。
class表示需要实例化 Bean 的类路径,指定的类必须包含 public 且无参数的构造方法。scope指定 Bean 的作用域,取值有:

  1. page:只能在当前页面使用该 Bean 对象;
  2. request:只能在一次请求范围内使用该 Bean 对象;
  3. session:只能在一次会话范围内使用该 Bean 对象;
  4. application:可以在整个应用范围内使用该 Bean 对象。
  • <jsp:setProperty >标签
<jsp:setProperty name = "beanName" property = "attributeName" value = "attributeValue"/>

其中,name 指定需要修改属性的 Bean 的名称;property 指定 Bean 的属性,即 Bean 类中的属性;value 是要设定的属性值。

  • <jsp:getProperty >标签
<jsp:getProperty name = "beanName" property = "attributeName">

其中,name 指定需要获取属性的 Bean 的名称;property 指定 Bean 的属性,即 Bean 类中的属性。

在现如今的开发过程中,JavaBean的真正用途在于和数据库的字段做映射(ORM)

ORM:

  • 表–>类
  • 字段–>属性
  • 行记录–>对象

People表:

idnameageaddress
1狂神1号3西安
2狂神2号18北京
3狂神3号38上海

数据库中的People表对应的Java中的People类:

package com.chen.pojo;

public class People {

    private int id;
    private String name;
    private int age;
    private String address;

    public People(){

    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return "People{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", address='" + address + '\'' +
                '}';
    }
}

使用JSP标签来对创建People类对象:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <jsp:useBean id="people01" class="com.chen.pojo.People" scope="page"/>

    <jsp:setProperty name="people01" property="id" value="1"/>
    <jsp:setProperty name="people01" property="name" value="狂胜1号"/>
    <jsp:setProperty name="people01" property="age" value="3"/>
    <jsp:setProperty name="people01" property="address" value="西安"/>

    <jsp:useBean id="people02" class="com.chen.pojo.People" scope="page"/>

    <jsp:setProperty name="people02" property="id" value="2"/>
    <jsp:setProperty name="people02" property="name" value="狂胜2号"/>
    <jsp:setProperty name="people02" property="age" value="18"/>
    <jsp:setProperty name="people02" property="address" value="北京"/>

    <jsp:useBean id="people03" class="com.chen.pojo.People" scope="page"/>

    <jsp:setProperty name="people03" property="id" value="3"/>
    <jsp:setProperty name="people03" property="name" value="狂胜3号"/>
    <jsp:setProperty name="people03" property="age" value="38"/>
    <jsp:setProperty name="people03" property="address" value="上海"/>

    <p>People表中第一行的数据如下:</p>
    id:<jsp:getProperty name="people01" property="id"/>
    姓名:<jsp:getProperty name="people01" property="name"/>
    年龄:<jsp:getProperty name="people01" property="age"/>
    地址:<jsp:getProperty name="people01" property="address"/>

</body>
</html>
  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值