1、认识JavaBean

2、在JSP中使用JavaBean

3、JavaBean的范围

1、认识JavaBean

JavaBean是一个遵循特定写法的Java类,在JavaBean中可以将控制逻辑、值、数据库访问和其他对象进行封装,并且可以被其他应用来调用。实际上,JavaBean就是一种Java组件技术。JavaBean的作用是向用户提供实现特定逻辑的方法接口,而具体的实现封装在组件的内部,不同的用户根据具体的应用情况使用该组件的部分或全部控制逻辑。

它通常具有如下特点:

Java类必须具有一个无参的构造函数(一般不写的话系统会自动生成)

私有化的成员属性。

私有化的属性必须通过public类型的方法暴露给其它程序,并且方法的命名也必须遵守一定的命名规范。

public class Student {
private String stuno;//学生学号
private String stuname;//学生姓名
private int age;//学生年龄
//Student类对外提供的用于访问私有属性的public方法
public String getStuno() {
return stuno;
}
public void setStuno(String stuno) {
this.stuno = stuno;
}
public String getStuname() {
return stuname;
}
public void setStuname(String stuname) {
this.stuname = stuname;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}

从上面的例子可以看出,在JavaBean中不仅要定义其成员变量,还要对成员变量定义setter/getter方法。对于每一个成员变量要定义一个getter方法和一个setter方法。setter方法称为属性修改器,getter方法称为属性访问器。属性修改器必须以小写的set前缀开始,后跟属性名,且属性名的第一个字母要改为大写,如上面的setStuname。属性访问器通常以小写的get前缀开始,后跟属性名,且属性名的第一个字母也要改为大写,如上面的getStuname。

特殊的JavaBean属性:

给Boolean类型设置属性,要将getter方法改为is方法

如:

private boolean member;
public boolean isMember()
{
return isMember;
}
public void setMember(boolean isMember)
{
this.isMember = isMember;
}

对于建立属性,MyEclipse提供了较为方便的做法。右击代码界面,在弹出的快捷菜单中选择Source|Generate Getters and Setteers命令

JSP 与 JavaBean实验 了解jsp与javabean的关系及使用_JSP 与 JavaBean实验

2、在JSP中使用JavaBean

2.1、为什么要在JSP中使用JavaBean?

在很多Javaweb项目中都要显示数据库中的内容。比如在学生信息管理系统中经常在页面中显示数据库中学生的信息,在这种情况下就必须要访问数据库。通常将访问数据库的代码写在JSP内。但是在JSP内嵌入大量的java代码可能会造成维护不方便。试想一下,如果JSP页面上需要进行复杂的HTML显示又要写大量的java代码,则对该页面的编写成员要求就高了,既要是html专家又得精通java。所以最好的办法就是将JSP中的Java代码移植到Java类中。而这些可能使用到的Java类就是JavaBean。

JSP 与 JavaBean实验 了解jsp与javabean的关系及使用_Java_02

JSP访问数据库

JSP 与 JavaBean实验 了解jsp与javabean的关系及使用_java bean 和jsp_03

Java类访问数据库

2.2、具体使用

1、定义JavaBean

方法一:直接在JSP中实例化JavaBean

%

但这种方法是在JSP中使用Java代码。

方法二:使用标签

标签用于在指定的域范围内查找指定名称的JavaBean对象,如果存在则直接返回该JavaBean对象的引用,如果不存在则实例化一个新的JavaBean对象并将它以指定的名称存储到指定的域范围中。

常用语法:

scope="page|request|session|application"/>

"id"属性用于指定JavaBean实例对象的引用名称和其存储在域范围中的名称。

"class"属性用于指定JavaBean的完整类名(即必须带有包名)。

"scope"属性用于指定JavaBean实例对象所存储的域范围,其取值只能是page、request、session和application等四个值中的一个,其默认值是page。

Insert title here

姓名:

性别:

年龄:

在该例子中使用jsp:useBean动作实例化了Student对象,对象名为student

2、设置JavaBean属性

在实例开发应用中定义JavaBean之后需要在JSP页面设置JavaBean组件的属性。也就是调用setter方法。

方法一:直接编写Java代码

方法二:使用标签

当值的来源是String常量时,jsp:setProperty的语法如下:

Insert title here

姓名:

性别:

年龄:

JSP 与 JavaBean实验 了解jsp与javabean的关系及使用_Java_04

当值来源是request参数时,jsp:setProperty的语法如下:

语法格式一:

语法格式二:

语法格式三:

语法格式四:

先写一个表单;

Insert title here

请输入学号:

请输入姓名:

请输入年龄:

JSP 与 JavaBean实验 了解jsp与javabean的关系及使用_Java_05

使用单个请求参数为bean的属性赋值

Insert title here

学号:

JSP 与 JavaBean实验 了解jsp与javabean的关系及使用_数据库_06

用所有的请求参数为bean的属性赋值:

Insert title here

学号:

姓名:

年龄:

JSP 与 JavaBean实验 了解jsp与javabean的关系及使用_数据库_07

3、JavaBean的范围

scope="page|request|session|application"/>

scope说明它们之间的作用范围是不同的。

●page:表示JavaBean对象的作用范围在实例化它的页面上,只在当前页面可用,在其他页面中不被认识。

●request:表示JavaBean实例除了可以在当前页面上可用之外,还可以在通过forward方法跳转的目标页面中被认识到。

●session:表示JavaBean对象可以存在session中,该对象可以被同一个用户的所有页面认识。

●application:表示JavaBean对象可以存在application中,该对象可以被所有用户的所有页面认识。