JavaBean详解

1.JavaBean简介

JavaBean是为Java语言设计的软件组件模型,具有可重复使用和跨平台的特点。可以通过JavaBean来进行封装业务逻辑,并进行数据库的操作等,从而很好的实现业务逻辑和前后台分离。
JavaBean其实就是一个简单的java类,这也就意味着,JavaBean具有java类的一切特征。JavaBean同样可以使用封装,继承,多态等特性。 
JavaBean的四个特性:
   JavaBean是一个公共的类,即用public修饰。
    一个JavaBean中至少存在一个无参的构造方法,此方法为JSP中的标签所使用。
   类中的属性必须封装,即声明为private,方法必须声明为public。
   JavaBean中封装的属性如果想被外部使用,则必须编写对应的setter、getter方法。

2.为什么要使用JavaBean

为什么要使用JavaBean呢,在之前编写的JSP页面中,可以发现很多代码并没有很好的体现Java面向对象的开发思想,大量的代码重复且混乱,在Web开发中如果想编写结构良好的代码,则需要用到JavaBean,之前说到过,JavaBean是使用Java语言开发的一个可重用的组件。因此,在JSP开发中可以使用JavaBean减少重复代码,使整个JSP代码的开发更简洁,JSP搭配JavaBean来使用,有以下的优点:
1.  可将HTML和Java代码分离,这主要是为了日后维护的方便。如果把所有的程序代码(HTML和Java)写到JSP页面中,会使整个程序代码又多又复杂,造成日后维护上的困难。
2.  可利用JavaBean的优点。将日常用到的程序写成JavaBean组件,当在JSP要使用时,只要调用JavaBean组件来执行用户所要的功能,不用再重复写相同的程序,这样以来也可以节省开发所需的时间。

3.创建一个JavaBean

示例1 创建一个名为Student的JavaBean
package com.javabean.demo;

public class Student {

    private int id;//学生的编号属性
    private String name;//学生的姓名属性
    private String grade;//学生的班级属性

    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 String getGrade() {
        return grade;
    }
    public void setGrade(String grade) {
        this.grade = grade;
    }

}
以上的JavaBean功能非常简单,只封装了学生的三个属性,即id、name和grade,同时包含了对应的setter、getter方法。
看过上述代码之后,读者可能会疑惑,之前已经说过,一个标准的JavaBean必须要存在一个无参的构造方法,但是上述代码并没有无参构造方法,怎么能说是一个标准的JavaBean呢?其实,如果我们写一个类中没有明确的定义一个构造方法时,会自动生成一个无参的构造方法,因此,上述代码符合JavaBean的要求。但是,如果我们定义了一个有参的构造方法之后,类就不会自动的为我们自动生成无参的构造方法了,这就需要我们自己去创建无参构造方法。

4.在JSP中使用JavaBean

4.1 使用JSP中的page指令导入所需要的JavaBean。

在JSP中可以使用<%@ page%>指令导入指定classpath里所需要的包和类,所以,我们编写的JavaBean也可以用这种方法导入到我们需要开发的JSP页面中。

【示例2】使用page指令导入JavaBean

首先在我们创建的工程里的webContent目录下新建一个名为javabean_demo01的jsp页面,代码如下所示:
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="com.javabean.demo.*"%><!-- 导入所需JavaBean -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>使用JavaBean</title>
</head>
<body>
    <%
        Student student = new Student();//声明并实例化Student对象
        student.setId(1);//设置id属性
        student.setName("张三");//设置name属性
        student.setGrade("三年级六班");//设置grade属性
    %>
    <h3>id:<%=student.getId() %></h3><!-- 输出id属性内容 -->
    <h3>name:<%=student.getName() %></h3><!-- 输出name属性内容 -->
    <h3>grade:<%=student.getGrade() %></h3><!-- 输出grade属性内容 -->
</body>
</html>

程序运行结果如图1所示:
这里写图片描述

4.2 使用指令

除使用page指令的import语句以外,还可以使用JSP中提供的<jsp:useBean>指令完成操作,在之前讲解JSP语法的时候已经简单讲解了此动作指令的语法,下面就为读者演示如何使用该指令。
在useBean指令中一共存在三个属性
   id:表示实例化对象的名称;
   scope:表示此对象保存的范围,一共有page、request、session、application四个属性范围;
   class:对象所对应的包.类名称。

【示例 3】使用userBean指令导入JavaBean

在我们创建的工程里的为webContent目录下新建一个名为javabean_demo02的jsp页面,代码如下所示:
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<jsp:useBean id="student" scope="page" class="com.javabean.demo.Student" />
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>使用JavaBean</title>
</head>
<body>
    <%
        student.setId(2);//设置id属性
        student.setName("李四");//设置name属性
        student.setGrade("三年级五班");//设置grade属性
    %>
    <h3>id:<%=student.getId()%></h3><!-- 输出id属性内容 -->
    <h3>name:<%=student.getName()%></h3><!-- 输出name属性内容 -->
    <h3>grade:<%=student.getGrade()%></h3><!-- 输出grade属性内容 -->
</body>
</html>

程序运行结果如图2所示
这里写图片描述

以上程序通过<jsp:useBean>指令完成了JavaBean的调用,与之前import语句导入相比,可以发现,使用<jsp:useBean>并没有实例化学生对象,而是直接使用student调用类中的set、get方法,实际上,使用<jsp:useBean>指令时,指令会默认调用Student类中的无参构造方法进行对象的实例化,实例化出来的对象名字就是指令中指定的id的名字。它的实现原理是通过反射机制完成的。
另外,需要注意的一点是,如果我们修改了src中的Class,就需要重启服务器,让Tomcat重新加载编译过的字节码文件,这样,修改才会起作用。

5.JavaBean的应用

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值