第五章JAVA bean

JavaBean是Java语言中的可重用组件,用于封装数据和功能。本文介绍了如何编写JavaBean,包括遵循的规则如提供无参构造器和getter/setter方法。接着,讲解了在JSP中如何使用JavaBean,涉及jsp:useBean和jsp:setProperty/jsp:getProperty标签。此外,还提到了getProperty和setProperty动作标记以及bean的辅助类。文章通过五个示例展示了JavaBean在实际Web应用程序中的应用,如三角形计算、四则运算、图像显示、日历和计数器功能。
摘要由CSDN通过智能技术生成

前言

JavaBean是一种JAVA语言写成的可重用组件。JavaBean可以用于封装数据、处理事务、提供用户界面等功能。本章我们将介绍JavaBean,以及一些JSP与JavaBean结合的简单例子。

5.1 编写JavaBean和使用JavaBean

5.1.1 编写JavaBean

要编写一个JavaBean,需要遵循以下规则:

JavaBean必须是一个具体的和公共的类,不能是抽象类或接口。
JavaBean必须提供一个无参的构造方法,以便其他程序可以实例化它。
JavaBean的属性必须是私有的,不能直接被外部访问。
JavaBean必须提供符合一致性设计模式的公共方法,来暴露其属性给外部。这些方法通常称为属性访问器(getter)和属性修改器(setter)。属性访问器以get或is开头,后跟属性名的首字母大写;属性修改器以set开头,后跟属性名的首字母大写。
例如,下面是一个简单的JavaBean类,它封装了一个人的姓名、年龄和性别:

package com.example.bean;

public class Person {
//私有属性
private String name;
private int age;
private String gender;

//无参构造方法
public Person() {

}

//属性访问器和修改器
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 getGender() {
    return gender;
}

public void setGender(String gender) {
    this.gender = gender;
}

}

5.1.2 保存bean的字节码

编写好JavaBean类后,需要将其编译成字节码文件,并保存在WEB-INF/classes目录下。如果JavaBean类属于某个包,则需要在WEB-INF/classes目录下创建相应的包结构,并将字节码文件放在对应的包目录下。

例如,上面编写的Person类属于com.example.bean包,则需要在WEB-INF/classes目录下创建com/example/bean目录,并将Person.class文件放在该目录下。

5.1.3 创建与使用bean

在JSP页面中,可以使用jsp:useBean标签来创建或查找一个JavaBean实例²。该标签有以下常用属性²:

id:指定JavaBean实例的引用名称和存储名称。
class:指定JavaBean类的完整类名(包括包名)。
scope:指定JavaBean实例存储的域范围,可以是page、request、session或application中的一个,默认是page。
该标签的作用是,在指定的域范围内查找指定id名称的JavaBean实例,如果存在则返回该实例的引用;如果不存在则根据指定的class创建一个新的实例,并将其存储在指定的域范围内,并返回该实例的引用²。

例如,在JSP页面中使用以下代码:

<jsp:useBean id=“person” class=“com.example.bean.Person” scope=“page”/>
则表示,在page域范围内查找id为person的JavaBean实例,如果存在则返回该实例的引用;如果不存在则根据com.example.bean.Person类创建一个新的实例,并将其存储在page域范围内,并返回该实例的引用。

创建或查找到JavaBean实例后,可以使用jsp:setProperty标签和jsp:getProperty标签来设置或获取其属性值²。这两个标签都有以下常用属性:

name:指定要操作的JavaBean实例的id名称。
property:指定要操作的JavaBean属性名称。
value:指定要设置给JavaBean属性的值(仅对jsp:setProperty标签有效)。
例如,在JSP页面中使用以下代码:

<jsp:setProperty name=“person” property=“name” value=“Tom”/>
<jsp:setProperty name=“person” property=“age” value=“18”/>
<jsp:setProperty name=“person” property=“gender” value=“male”/>

则表示,将person实例的name属性设置为Tom,age属性设置为18,gender属性设置为male。

<jsp:getProperty name=“person” property=“name”/>
<jsp:getProperty name=“person” property=“age”/>
<jsp:getProperty name=“person” property=“gender”/>

则表示,输出person实例的name、age和gender属性值。

5.2 获取和修改bean的属性

5.2.1 getProperty动作标记

getProperty动作标记用于获取一个bean对象中某个属性值,并将其输出到当前位置。getProperty动作标记有以下常用属性:

name:指定要操作的bean对象id名称。
property:指定要操作bean对象中某个具体属性名称。
例如,在JSP页面中使用以下代码:

<jsp:useBean id=“person” class=“com.example.bean.Person” scope=“page”/>
<jsp:setProperty name=“person” property=“name” value=“Tom”/>

姓名:

则表示,在page域范围内创建或查找id为person

5.2.2 setProperty动作标记

setProperty动作标记用于设置一个bean对象中某个属性的值。setProperty动作标记有以下常用属性³:

name:指定要操作的bean对象id名称。
property:指定要操作bean对象中某个具体属性名称。
value:指定要设置给bean属性的值。
例如,在JSP页面中使用以下代码:

<jsp:useBean id=“person” class=“com.example.bean.Person” scope=“page”/>
<jsp:setProperty name=“person” property=“name” value=“Tom”/>

姓名:

1 2 3 则表示,将person对象的name属性设置为Tom,并输出其值。

setProperty动作标记还可以使用param属性来指定一个请求参数的名称,该参数的值将被设置给bean属性³。例如,在JSP页面中使用以下代码:

<jsp:useBean id=“person” class=“com.example.bean.Person” scope=“page”/>
<jsp:setProperty name=“person” property=“name” param=“username”/>

姓名:

则表示,将person对象的name属性设置为请求参数username的值,并输出其值。

如果property属性的值为*,则表示将所有与bean属性同名的请求参数的值设置给bean属性。例如,在JSP页面中使用以下代码:

<jsp:useBean id=“person” class=“com.example.bean.Person” scope=“page”/>
<jsp:setProperty name=“person” property=“*”/>

姓名:

年龄:

性别:

则表示,将所有与person对象属性同名的请求参数的值设置给person对象属性,并输出其值。

5.3 bean的辅助类

bean的辅助类包括Introspector、PropertyDescriptor和BeanInfo等。其中,Introspector类主要用于获取bean的属性描述符,PropertyDescriptor类描述bean的属性类型,BeanInfo类写bean的信息。

5.4 JSP与bean结合的简单例子

下面基于5.4节的Javabean例子,介绍一下Javabean在JSP中的使用方法。

5.4.1 三角形bean

public class TriangleBean {
private double width; //宽
private double height; //高
private double area; //面积
public TriangleBean() {} //空构造方法
//计算三角形面积
public void calculateTriangleArea(){
area = width * height / 2;
}
//获取三角形面积
public double getArea() {
return area;
}
//设置宽
public void setWidth(double width) {
this.width = width;
}
//设置高
public void setHeight(double height) {
this.height = height;
}
}

在JSP页面中通过jsp:useBean标记创建一个三角形对象,并设置它的宽和高,并且在页面中使用jsp:setProperty标记给宽高属性赋值,最后计算面积并显示。

<jsp:useBean id=“triangle” class=“com.test.TriangleBean”/>
<jsp:setProperty name=“triangle” property=“width” value=“10”/>
<jsp:setProperty name=“triangle” property=“height” value=“5”/>
jsp:scriptlet
triangle.calculateTriangleArea();
</jsp:scriptlet>
三角形面积: <%= triangle.getArea() %>

5.4.2 四则运算bean

public class ArithmeticBean {
private int a;
private int b;
private int result;
public ArithmeticBean() {} //空构造方法
//计算加法
public void add() {
result = a + b;
}
//计算减法
public void subtract() {
result = a - b;
}
//计算乘法
public void multiply() {
result = a * b;
}
//计算除法
public void divide() {
result = a / b;
}
//获取结果
public int getResult() {
return result;
}
//设置参数a
public void setA(int a) {
this.a = a;
}
//设置参数b
public void setB(int b) {
this.b = b;
}
}
1
在JSP页面中通过jsp:useBean标记创建一个四则运算对象,并且在页面中使用jsp:setProperty标记给参数a和b赋值,然后使用jsp:scriptlet中的表达式计算并显示结果。

<jsp:useBean id=“arithmetic” class=“com.test.ArithmeticBean”/>
<jsp:setProperty name=“arithmetic” property=“a” value=“10”/>
<jsp:setProperty name=“arithmetic” property=“b” value=“5”/>
jsp:scriptlet
arithmetic.add();
</jsp:scriptlet>
加法: <%= arithmetic.getResult() %>

jsp:scriptlet
arithmetic.subtract();
</jsp:scriptlet>
减法: <%= arithmetic.getResult() %>

jsp:scriptlet
arithmetic.multiply();
</jsp:scriptlet>
乘法: <%= arithmetic.getResult() %>

jsp:scriptlet
arithmetic.divide();
</jsp:scriptlet>
除法: <%= arithmetic.getResult() %>

5.4.3 浏览图像bean

public class ImageBean {
private String src; //图片文件路径
private String alt; //图片说明
public ImageBean() {}
//获取图片文件路径
public String getSrc() {
return src;
}
//设置图片文件路径
public void setSrc(String src) {
this.src = src;
}
//获取图片说明
public String getAlt() {
return alt;
}
//设置图片说明
public void setAlt(String alt) {
this.alt = alt;
}
}

在JSP页面中通过jsp:useBean标记创建一个图像对象,并且设置图片文件路径和图片说明,最后使用标签显示图片。

<jsp:useBean id=“imgBean” class=“com.test.ImageBean”/>
<jsp:setProperty name=“imgBean” property=“src” value=“images/test.jpg”/>
<jsp:setProperty name=“imgBean” property=“alt” value=“测试图片”/>
<%= imgBean.getAlt() %>

5.4.4 日历bean
public class CalendarBean {
private Calendar calendar = Calendar.getInstance();
public CalendarBean() {} //空构造方法
//获取年份
public int getYear() {
return calendar.get(Calendar.YEAR);
}
//获取月份
public int getMonth() {
return calendar.get(Calendar.MONTH) + 1;
}
//获取日期
public int getDate() {
return calendar.get(Calendar.DATE);
}
//获取星期
public int getWeek() {
return calendar.get(Calendar.DAY_OF_WEEK) - 1;
}
//下一个月
public void nextMonth() {
calendar.add(Calendar.MONTH, 1);
}
//上一个月
public void prevMonth() {
calendar.add(Calendar.MONTH, -1);
}
}

在JSP页面中通过jsp:useBean标记创建一个日历对象,并且使用脚本语言JavaScript调用nextMonth和prevMonth方法改变月份,最后在页面中使用表格显示当月的日历。

<jsp:useBean id=“calendar” class=“com.test.CalendarBean”/>

5.4.5 计数器bean

public class CounterBean {
private int count; //计数器
public CounterBean() {} //空构造方法
//增加计数器的值
public void increment() {
count++;
}
//获取计数器的值
public int getCount() {
return count;
}
}

在JSP页面中通过jsp:useBean标记创建一个计数器对象,并且使用脚本语言JavaScript调用increment方法增加计数器的值,最后在页面中显示计数器的值。

<jsp:useBean id=“counter” class=“com.test.CounterBean”/>
当前计数器的值:<%= counter.getCount() %>
<a href=“#” οnclick=“<%= “counter.increment();” %>”>增加
1
2
3

总结

本篇博客主要介绍了Javabean的编写和使用方法,以及如何在JSP中使用Javabean。我们还讨论了如何获取和修改bean的属性,以及Javabean的辅助类。最后,通过五个简单的例子展示了Javabean在WEB应用程序中的应用

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值