什么是 JavaBean ?(Java豆)

在 JSP 中 使用 JavaBean。

三个标签:

1
2
3
<jsp:useBean id="JavaBean的标识符" class="JavaBean的全类名" scope="作用范围"></jsp:useBean>
<jsp:setProperty property="属性名(键)" value="属性值" name="JavaBean的标识符" />
<jsp:getProperty property="属性名(键)" name="JavaBean的标识符" />

1. JavaBean

用作 JavaBean 的类的要求:

  • ① 必须有一个公共的、无参的构造方法(利用 反射 创建该类的对象时必须的
  • ② JavaBean 的属性以方法定义的形式出现
  • ③ 对属性赋值的方法称为属性修改器或 setter 方法,获取属性值的方法称为属性访问器或 getter 方法
  • ④ userName 的 setter 方法名为:setUserName,password 的 getter 方法名为 getPassword
  • ⑤ JavaBean 的属性名根据 getter 和 setter 方法名生成,方法名去掉”get“或”set“,剩余部分首字母小写即为属性名

以下就是一个典型的 JavaBean 类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package com.crd.design.domain;

public class User {
private int userId;
private String userName;
private String userPassword;
private String userSalt;
private String userEmail;
public User() {
super();
}
public User(int userId, String userName, String userPassword, String userSalt, String userEmail) {
super();
this.userId = userId;
this.userName = userName;
this.userPassword = userPassword;
this.userSalt = userSalt;
this.userEmail = userEmail;
}
public User(String userName, String userPassword, String userEmail) {
super();
this.userName = userName;
this.userPassword = userPassword;
this.userEmail = userEmail;
}
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPassword() {
return userPassword;
}
public void setUserPassword(String userPassword) {
this.userPassword = userPassword;
}
public String getUserSalt() {
return userSalt;
}
public void setUserSalt(String userSalt) {
this.userSalt = userSalt;
}
public String getUserEmail() {
return userEmail;
}
public void setUserEmail(String userEmail) {
this.userEmail = userEmail;
}
@Override
public String toString() {
return "User [userId=" + userId + ", userName=" + userName + ", userPassword=" + userPassword + ", userSalt="
+ userSalt + ", userEmail=" + userEmail + "]";
}
}

2. JSP中应用 JavaBean

  对于 JSP 页面来说,只要是一个类有一个公共的、无参的构造方法,该类就可以用作创建 JavaBean 对象。该类中不接受任何参数的 getter 方法和 只接受一个参数的 setter 方法,都可以当作该类对象的属性名来引用。

A.相关标签

标签 作用
<jsp:useBean> 创建和查找 JavaBean 实例对象
<jsp:setProperty> 设置 JavaBean 对象的属性
<jsp:getProperty> 读取 JavaBean 对象的属性

B.<jsp:useBean>

<jsp:useBean>用法:

  用于在某个指定(scope属性指定)的域范围(application、session、request、pageContext等)内查找一个指定(id属性指定)名称的 JavaBean 对象,若查到则返回该对象的引用,若不存在则实例化一个新的 JavaBean 对象(class属性指定)并将它存进 scope 属性 指定的域范围内。

语法:

1
2
<jsp:useBean id="beanInstanceName" class="package.class" scope="page|request|session|application"></jsp:useBean>
<%-- scope只能取上述四个值,page 为默认值 --%>

另一种用法:(此时返回的bean是Object类型的对象)

1
<jsp:useBean id="beanInstanceName" beanName="package.class" type="java.lang.Object" scope="page|request|session|application"></jsp:useBean>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<jsp:useBean id="user" class="com.crd.design.domain.User" scope="session"></jsp:useBean>
<%--以上代码相当于如下:
<%
User user = (User)session.getAttribute("user");
if(user == null){
user = (User)Class.forName("com.crd.design.domain.User").newInstance();
session.setAttribute("user", user);
}
%>
--%>
<%-- useBean之后就可以使用该bean对象,如: --%>
<%
user.setUserName("CRainyDay");
%>

C.<jsp:setProperty>

<jsp:setProperty>用法:

  给指定(name属性指定)的 JavaBean 对象的 指定(property属性指定)属性 赋指定(value属性指定)的属性值。

语法:

1
<jsp:setProperty property="属性名" value="属性值" name="id指定的bean对象" />
1
2
3
4
5
6
7
<jsp:useBean id="user" class="com.crd.design.domain.User" scope="session"></jsp:useBean>
<jsp:setProperty property="userName" value="crainyday" name="user" />
<%--以上代码相当于如下:
<%
user.setUserName("crainyday");
%>
--%>

setProperty 的特殊用法:

若 property 属性值为 ”*“,省略 value 属性,则会自动为对应 JavaBean 对象的所有属性赋值为对应的请求参数的值。

1
2
3
4
5
6
<%--例:请求参数为 ?userName="crainyday"&userId=12&userPassword="crainyday"--%>
<jsp:useBean id="user" class="com.crd.design.domain.User" scope="session"></jsp:useBean>
<jsp:setProperty property="*" name="user" />
<%--这样做进一步简化了开发,
否则,必须先从request中取出对应参数的值,
然后为JavaBean对象对应属性赋值--%>

D.<jsp:getProperty>

<jsp:getProperty>用法:

  获取指定(name属性指定)的 JavaBean 对象的 指定(property属性指定)属性 的属性值。

语法:

1
<jsp:getProperty property="属性名" name="id指定的bean对象" />
1
2
3
4
5
<jsp:useBean id="user" class="com.crd.design.domain.User" scope="session"></jsp:useBean>
<jsp:getProperty property="userName" name="user" />
<%--以上代码相当于如下:
<%= user.getUserName()%>
--%>

3.利用eclipse快速开发JavaBean

  • ①新建类并创建 JavaBean 的私有属性。

JavaWeb4-0.1

  • ②在该类中右键单击,然后点击源码,再点击生成 Getter 和 Setter 方法,选择要生成方法的字段即可生成对应的 Getter、Setter方法。

JavaWeb4-0.2

  • ③同步骤②,也可以由字段生成该类的构造方法,一定要一个公共的、无参的构造方法。

  • ④同步骤②,也可以覆盖该类的 toString 方法,用于之后测试 JavaBean。


评论