JavaBean

JavaBean 是特殊的 Java 类,使用 Java 语言书写,并且遵守 JavaBean API 规范。

JavaBean规范: 

          <1>需要被序列化并且实现了 Serializable 接口。
          <2>JavaBean 类必须是一个公共类,并将其访问属性设置为 public ,如: public class user{ …}
          <3>JavaBean 类必须有一个空的构造函数:类中必须有一个不带参数的公用构造器,例如:public User() {…}
          <4>一个javaBean类不应有公共实例变量,类变量都为private ,如: private int id

          <5>javaBean属性是具有getter/setter方法的成员变量。也可以只提供getter方法,这样的属性叫只读属性;也可以只提供setter方法,这样的属性叫只写属性; 如果属性类型为boolean类型,那么读方法的格式可以是get 或is。例如名为abc的boolean类型的属性,它的读方法可以是getAbc(),也可以是isAbc();
                 命名规范: 
                     一般JavaBean属性以小写字母开头,驼峰命名格式,相应的 getter/setter 方法是 get/set 接上首字母大写的属性名。
                     例如:属性名为userName,其对应的getter/setter 方法是 getUserName/setUserName。
                     属性名为uName,其对应的getter/setter 方法是getuName/setuName。
                     属性名为URL, 其对应的getter/setter 方法是getURL/setURL。

package com.qdu.beans;

import java.io.Serializable;

public class Student implements Serializable{
    
    private String srollno;
    private String spassword;
    private String sname;
    private String sgender;
    private String sbatch;

    //带参数的构造函数
    public Student(String sno, String sname, String spassword, String sgender, String sbatch) {
        this.srollno = sno;
        this.spassword = spassword;
        this.sname = sname;
        this.sgender = sgender;
        this.sbatch = sbatch;
    }

    //建议实体类都包含一个不带参数的构造函数
    public Student() {
    }

    public String getSrollno() {
        return srollno;
    }

    public void setSrollno(String srollno) {
        this.srollno = srollno;
    }

    public String getSpassword() {
        return spassword;
    }

    public void setSpassword(String spassword) {
        this.spassword = spassword;
    }

    public String getSname() {
        return sname;
    }

    public void setSname(String sname) {
        this.sname = sname;
    }

    public String getSgender() {
        return sgender;
    }

    public void setSgender(String sgender) {
        this.sgender = sgender;
    }

    public String getSbatch() {
        return sbatch;
    }

    public void setSbatch(String sbatch) {
        this.sbatch = sbatch;
    }
}
View Code

JavaBean 属性
一个 JavaBean 对象的属性应该是可访问的。这个属性可以是任意合法的 Java 数据类型,包括自定义 Java 类。
一个 JavaBean 对象的属性可以是可读写,或只读,或只写。JavaBean 对象的属性通过 JavaBean 实现类中提供的两个方法来访问:

一个 JavaBean 对象的属性应该是可访问的。这个属性可以是任意合法的 Java 数据类型,包括自定义 Java 类。
一个 JavaBean 对象的属性可以是可读写,或只读,或只写。JavaBean 对象的属性通过 JavaBean 实现类中提供的两个方法来访问:

访问JavaBean

<jsp:useBean> 标签可以在 JSP 中声明一个 JavaBean,然后使用。声明后,JavaBean 对象就成了脚本变量,可以通过脚本元素或其他自定义标签来访问。<jsp:useBean> 标签的语法格式如下:

<jsp:useBean id="bean 的名字" scope="bean 的作用域" typeSpec/>

jsp提供三个动作jsp:useBean, jsp:getProperty(获取属性),jsp:setProperty,用于在jsp页面上操作一个javabean
       jsp:useBean动作用于查找或创建一个javabean实例,如果查找到bean,则后续可以使用bean的id去访问该bean,否则创建一个新的javabean实例,常用属性
               ** id:要查找或创建的bean的名称
               ** class: 要查找的bean对应的类的类名
               ** scope: 在什么范围查找一个bean,范围有四个:page,request,session,application

 <!--<h3>1. 查找或创建JavaBean实例</h3>-->
            <!--目前还没有一个名为stu的javabean实例,所以这里的代码会导致一个新的javabean实例被创建-->
            <jsp:useBean id="stu" class="com.qdu.beans.Student" scope="session" />
View Code 

访问 JavaBean 对象的属性

在 <jsp:useBean> 标签主体中使用 <jsp:getProperty/> 标签来调用 getter 方法,使用 <jsp:setProperty/> 标签来调用 setter 方法,语法格式如下:

 jsp:setProperty动作用于设置一个javabean的指定属性的值,该动作的常用属性有:
               ** name:指定要使用的bean的名称,就是useBean中指定的
               ** property:指定要设置的属性的名称,为javabean对应的类中的属性名
               ** value:javabean属性的值

<!--<h3>2. 设置JavaBean实例的属性的值</h3>-->
            <jsp:setProperty name="stu" property="srollno" value="2017208888" />
            <jsp:setProperty name="stu" property="sname" value="Anna" />
            <jsp:setProperty name="stu" property="spassword" value="6666" />
            <jsp:setProperty name="stu" property="sgender" value="女" />
            <jsp:setProperty name="stu" property="sbatch" value="17J03班" />
View Code

       jsp:getProperty动作用于获取一个javabean的指定属性的值,该动作的常用属性有:
               ** name:指定要使用的bean的名称,就是useBean中指定的
               ** property:指定要获取的属性的名称,为javabean对应的类中的属性名

<!--<h3>3. 获取JavaBean实例的属性的值</h3>-->
            <p>
                <br>学号: <jsp:getProperty name="stu" property="srollno" />
                <br>密码: <jsp:getProperty name="stu" property="spassword" />
                <br>姓名: <jsp:getProperty name="stu" property="sgender" />
                <br>性别: <jsp:getProperty name="stu" property="sgender" />
                <br>班级: <jsp:getProperty name="stu" property="sbatch" />
            </p>
View Code

设置bean属性值的方式

<body>
        
        <h1>设置bean属性值的方式</h1>
        <hr>
        
        <!-- 这里因为还没有一个名为stu的javabean,所以useBean会创建一个Student类型的bean对象 -->
        <jsp:useBean id="stu" class="com.qdu.beans.Student" scope="request" />

        <h4>1. 通过value属性直接给出值</h4>
        <jsp:setProperty name="stu" property="srollno" value="2016890709" />
        <jsp:setProperty name="stu" property="sname" value="anna" />

        姓名:<jsp:getProperty name="stu" property="sname" />
        <h4>2. 通过param属性指定使用的请求参数,给出参数的名称</h4>
        <jsp:setProperty name="stu" property="srollno" param="srollno" />
        <jsp:setProperty name="stu" property="spassword" param="spassword" />
        <jsp:setProperty name="stu" property="sname" param="sname" />
        <jsp:setProperty name="stu" property="sgender" param="sgender" />
        <jsp:setProperty name="stu" property="sbatch" param="sbatch" />
        
        姓名:<jsp:getProperty name="stu" property="sname"/>
        <h4>3. 不给value或param属性,则根据属性名使用同名的请求参数的值</h4>
        <jsp:setProperty name="stu" property="srollno" />
        <jsp:setProperty name="stu" property="spassword"/>
        <jsp:setProperty name="stu" property="sname" />
        <jsp:setProperty name="stu" property="sgender" />
        <jsp:setProperty name="stu" property="sbatch" />
        
        姓名:<jsp:getProperty name="stu" property="sname"/>
        <h4>4. 使用*:所有属性根据属性名自动匹配请求参数名称,使用对应参数的值,前提是属性名和请求参数名相同</h4>
        <!--如果指定property为*,则表示自动使用同名的请求参数的值作为同名的属性的值-->
        <jsp:setProperty name="stu" property="*" />
        
        姓名:<jsp:getProperty name="stu" property="sname"/>
        
    </body>
View Code
posted @ 2019-10-15 12:29  七忆鱼  阅读(221)  评论(0编辑  收藏  举报