什么是 JavaBean
JavaBean 是使用 java 代码开发的一个重复组件,jsp 开发中,可以使用 JavaBean 减少 jsp 中 Java 代码量。用于解耦合,提高程序的可读性和可维护性,jsp 配合 JavaBean 使用,有如下优势:
-
可以将HTML代码和JAVA代码分开
-
可以使用JavaBean的优势,开发一个组件,以便重复使用
JavaBean 的要求
- JavaBean 本身是一个类,属于Java面向对象的编程
- 所有的JavaBean必须放在一个包中
- 所有的JavaBean都必须都必须使用public class 声明
- JavaBean中所有的属性,都必须封装,然后提供getter和setter方法
- JavaBean中至少要存在一个无参数构造器
实例:
public class UserInfo {
private String userName;
private String passWord;
private String email;;
private Integer age;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public UserInfo(String userName, String passWord, String email, Integer age) {
super();
this.userName = userName;
this.passWord = passWord;
this.email = email;
this.age = age;
}
public UserInfo() {
super();
// TODO Auto-generated constructor stub
}
}
JavaBean 使用方式
- 使用 scriptlet 形式调用 JavaBean
<%
UserInfo userInfo = new UserInfo();
userInfo.setUserName("jjm");
userInfo.setPassWord("jjm123");
userInfo.setEmail("jjm_ff@163.com");
userInfo.setAge(30);
%>
<h1><%= userInfo.getUserName() %></h1>
<h1><%= userInfo.getPassWord() %></h1>
<h1><%= userInfo.getEmail() %></h1>
<h1><%= userInfo.getAge() %></h1>
- 使用 jsp 标签
<jsp:useBean id="userInfo" class="com.wanbang.entities.UserInfo" scope="page"></jsp:useBean>
<%
userInfo.setUserName("jjm");
userInfo.setPassWord("jjm123");
userInfo.setEmail("jjm_ff@163.com");
userInfo.setAge(30);
%>
<h1><%= userInfo.getUserName() %></h1>
<h1><%= userInfo.getPassWord() %></h1>
<h1><%= userInfo.getEmail() %></h1>
<h1><%= userInfo.getAge() %></h1>
其中,<jsp:useBean></jsp:useBean>
是 jsp 使用 JavaBean 的语法。其中包含几个参数。
- id : bean 的名称,也就对象的名称
- class : JavaBean 类的全类名
- scope : 域范围
范例:使用 JavaBean 接受参数。
我们的 demo01.jsp 主要内容可以这样写
<form action="demo02.jsp" method="post">
USERNAME : <input type="text" name="userName">
<br>
PASSWORD : <input type="password" name="passWord">
<br>
EMAIL : <input type="text" name="email">
<br>
AGE : <input type="text" name="age">
<br>
<button>提交</button>
</form>
demo02.jsp 可以这样写
<jsp:useBean id="userInfo" class="com.wanbang.entities.UserInfo" scope="page"></jsp:useBean>
<jsp:setProperty property="*" name="userInfo"/>
<h1><%= userInfo.getUserName() %></h1>
<h1><%= userInfo.getPassWord() %></h1>
<h1><%= userInfo.getEmail() %></h1>
<h1><%= userInfo.getAge() %></h1>
其中 <jsp:setProperty property="" name=""/>
是我们用来设置快速为 JavaBean 对象匹配参数使用的标签。其中:
- property
- 设置属性名称,* 表示自动匹配属性名和参数名
- 注意:参数名称会和 JavaBean 风格的属性名向匹配,即 setter 方法对应的属性名要与我们控件 name 属性名称对应。比如我这里 username 对应的 setUserName() 方法,需要和 控件上的 name 属性名对齐,set 这个不用添加上去。并且除了第一个字符必须是方法名,第一个字符的小写,后面的字符,需要与方法名一致。
- name
- 要设置属性的对象,也就是
<jsp:useBean></jsp:useBean>
中对应的 Id 名。
- 要设置属性的对象,也就是
这里不止这样写,还有其他几种。比如:
- 属性名和参数名自动匹配
<jsp:setProperty property="*" name="userInfo"/>
- 属性匹配参数
<jsp:setProperty property="age" name="userInfo"/>
- 属性匹配指定参数
<jsp:setProperty property="userName" param="email" name="userInfo"/>
- 指定属性的属性值
<jsp:setProperty property="age" value="10" name="userInfo"/>
scope 参数
可以指定参数,让 JavaBean 的范围扩展到其他域,例如 page 域, Session 域等,一共四个值:
- page
- request
- session
- application
这里就不多介绍了。
这里我们也可以通过域对象的方法 removeAttribute(“对象名/JavaBean ID”) 来删除。例如:
<%
request.removeAttribute("userInfo");
%>