<jsp:useBean />中JavaBean的概念及其设计规范
<jsp: useBean>中的JavaBean不同于EJB开发中的Bean也不同于GUI开发中的Bean,它是一类特殊的Java类在JSP开发中是提供给JSP/Servlet使用的,它的设计通常遵循如下基本要求:
1) JavaBean定义类的访问控制用public定义
2) 类的成员域的访问控制必须用private定义 (即 私有化成员域)
3) 必须定义一个无参的构造器即默认构造器
(注意,当定义JavaBean时如果不定义任何的构造器 则JVM会自动添加一个无参构造器)
4) 私有化的成员域必须通过访问控制是public的成员方法进行设值、取值,且这些方法的方法名遵循特定的命名方式(以小写的set或get为前缀)
(即 需要为私有化的成员域定义相应的setter和getter)
5) 实现 java.io.Serializable 接口
一旦需要在网络中传输JavaBean时则必须要实现Serializable接口,如session钝化问题。
(注意:该项规范在实际开发中的使用标准是“最迟使用”即不得不需要进行JavaBean实例对象的状态的序列化时才采用)
使用说明:设计规范 1) - 4)强制使用,设计规范 5) 最迟使用
2. JavaBean的"属性"的含义
1) JavaBean的属性是由setters和getters决定的,而非定义JavaBean的类的成员域
2) setter:a) 该方法的访问控制用public定义
b) 返回值类型:void
c) 以"set"开头,后加一个私有化的成员域且将该私有化成员域的第一个字母大写
d) 方法参数:参数的个数是1,参数类型与某个私有化的成员域一致
3) getter:a) 该方法的访问控制用public定义
b) 返回值:某个私有化的成员域
c) 以"get"/"is"开头,后加一个私有化的成员域且将该私有化成员域的第一个字母大写
d) 方法参数列表为空
注意:当私有化成员的类型是"boolean"时,该属性的getter是以"is"开头而不再是"get"开头
4) 由setter或getter获取JavaBean属性的规则:
去掉"set"或"get"后的字母串,若第二个字母是小写的则将第一个字母也变成小写的
3. Code Example (define a User Bean)
| package cn.edu.wfu.cs.web.beans; import java.io.Serializable; /** * * @author Huihui Zhang * */ public class UserBeanDemo implements Serializable { private static final long serialVersionUID = -3162981080472082953L; //定義Bean屬性 private String id; private String name; private int age; private String sex; //定義構造器 public UserBeanDemo() { super(); } public UserBeanDemo(String id, String name, int age, String sex) { this.id = id; this.name = name; this.age = age; this.sex = sex; } //定義setters和getters public String getId() { return id; } public void setId(String 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 getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } } |
4. Scriptlet中直接调用JavaBean
运行结果:
|



