JavaBean的介绍
实际上Javabean在开发中使用很多. 在比较早的时候,有一句话:如果一个程序员不懂JavaBean,那么就不懂jsp,在jsp中可以使用javaBean减少jsp中的Java代码量,使用整个JSP开起来更加的整洁、干净,当然主要的原因还是在于解除jsp中的Java代码和html代码仅仅的耦合在一起的问题,以便于提高程序的可读性和可维护性,jsp搭配JavaBean使用的,
有以下几点优势:
- 可以将html代码和java代码相分离,我们的最终目标就是在jsp中看不到java代码,这样以后维护会比较方便。
- 可以使用JavaBean的优点,将经常需要使用的操作编写成一个JavaBean的组件,在jsp调用的时候,只需要调用javaBean的组件来执行用户需要去的操作,不需要再编写相同形式的程序,减少代码的冗余。简单来说,就是将一些复杂的java代码放在java类中编写,方便调用,而不是在jsp中写大量的复杂的java代码。
JavaBean的开发要求:
- JavaBean本身是一个类,属于java面向对象编程
- 所有的JavaBean必须放在包中
- 所以的JavaBean必须以public class声明
- 所有的JavaBean类中的属性都必须封装,然后提供准确的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
54package com.wanbangee.entties;
import java.util.Date;
public class Person {
private int personId;
private String personName;
private String personPass;
private int personAge;
private Date personBirthday;
public int getPersonId() {
return personId;
}
public void setPersonId(int personId) {
this.personId = personId;
}
public String getPersonName() {
return personName;
}
public void setPersonName(String personName) {
this.personName = personName;
}
public String getPersonPass() {
return personPass;
}
public void setPersonPass(String personPass) {
this.personPass = personPass;
}
public int getPersonAge() {
return personAge;
}
public void setPersonAge(int personAge) {
this.personAge = personAge;
}
public Date getPersonBirthday() {
return personBirthday;
}
public void setPersonBirthday(Date personBirthday) {
this.personBirthday = personBirthday;
}
public Person(int personId, String personName, String personPass, int personAge, Date personBirthday) {
super();
this.personId = personId;
this.personName = personName;
this.personPass = personPass;
this.personAge = personAge;
this.personBirthday = personBirthday;
}
public Person() {
super();
// TODO Auto-generated constructor stub
}
}
可执行的Web的标准目录:
- WebContent
- 使用scriptlet来调用javabean
- 使用jsp标签完成
第一种方式:使用scriptlet来调用javabean
1
2
3
4
5
6
7
8
9<%
Person person = new Person();
person.setPersonId(10);
person.setPersonAge(20);
person.setPersonName("张大炮");
person.setPersonPass("123456");
person.setPersonBirthday(new Date());
%>
<h1><%=person %></h1>
以上在jsp中使用JavaBean和我们之前的写法没有任何的区别。
第二种方式:使用jsp标签完成
jsp中使用JavaBean的方式:
- id : 对应的是javaBean的对象名称
- class : 对应的是Javabean的全类名
- scope : JavaBean的范围,对应4中范围,page、request、session、application
1 | <jsp:useBean id="person" class="com.wanbangee.entties.Person" scope="page"> |
JavaBean的作用
以上讲解的JavaBean在jsp中如何调用的问题
那么JavaBean在jsp中如何使用呢?
这就是JavaBean在jsp中最大的作用:在接收传递参数的问题上1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17<form action="<%=request.getContextPath()%>/jsp/javabean/page04.jsp" method='post'>
personId:<input type="text" name = 'personId'><br/>
personName:<input type="text" name = 'personName'><br/>
personPass:<input type="text" name = 'personPass'><br/>
personAge:<input type="text" name = 'personAge'><br/>
personBirthday:<input type="date" name = 'personBirthday'><br/>
<button>Submit</button>
</form>
<%
/* 抛弃此种接收参数的方式 */
//String personName = request.getParameter("personName");
%>
<jsp:useBean id="person" class="com.wanbangee.entties.Person" scope="page"></jsp:useBean>
`<jsp:setProperty property="*" name="person"/>`
<h1><%=person %></h1>
jsp:setProperty表示装配对象的属性,根据javaBean风格属性名称和参数名称自动装配,调用的是setter方法将参数设置到javabean的属性上去的,实际上有四种用法:
- 自动装配:<jsp:setProperty property=’*’name=’对象名’/>
- 指定属性匹配:<jsp:setProperty property=’属性名’name=’对象名’/>
- 指定参数匹配指定的属性:<jsp:setProperty property=’属性名’param=‘参数名’name=’对象名’/>
- 指定属性匹配的值:<jsp:setProperty property=’属性名’value=‘属性值’name=’对象名’/>
1 |
|
通过程序发现,使用第一种自动匹配的方式肯定是最好用的。
JavaBean的范围
JavaBean有四种范围:
- page范围:只在当前页面有效
- request范围:转发之后有效
- session范围:只要浏览器不关闭,转发和重定向后都有效
- application范围:只要服务器不关闭,JavaBean一直存在
<%
/* 抛弃此种接收参数的方式 */
//String personName = request.getParameter("personName");
%>
<jsp:useBean id="person" class="com.wanbangee.entties.Person" scope="session"></jsp:useBean>
第一种:通过JavaBean风格的属性名和参数名自动匹配
<jsp:setProperty property="*" name="person"/>
第二种:匹配指定的属性
<jsp:setProperty property="personName" name="person"/>
第三种:指定的属性匹配指定的参数
<jsp:setProperty property="personName" param="personBirthday" name="person"/>
第四种:指定的属性匹配指定的值
<jsp:setProperty property="personName" value='张益达' name="person"/>
<h1><%=person %></h1>
<a href='<%=request.getContextPath()%>/jsp/javabean/page05.jsp'>走你</a>
<jsp:useBean id="person" class="com.wanbangee.entties.Person" scope="session"></jsp:useBean>
<h1><%=person %></h1>
以上是session范围,转发和重定向后都有效。
JavaBean的删除
JavaBean在jsp中依靠jsp标签jsp:useBean来创建,但是删除的操作并不是使用标签,而是使用属性的删除方式。1
2
3
4
5
6 <%
session.removeAttribute("person");//根据名称异常JavaBean
%>
<jsp:useBean id="person" class="com.wanbangee.entties.Person" scope="session"></jsp:useBean>
<h1><%=person %></h1>
小结
javaBean的基本介绍,掌握JavaBean的作用;
目前来说javaBean作用就是用于参数的接收,在参数接收的时候有四种方式进行匹配,第一种方式最好用;
JavaBean的保存依然是有四种范围的,操作方式和属性也是雷同;
JavaBean的使用看似简单,在后期的开发中,我们会赋予JavaBean更多的操作,JavaBean实际上就是一个小小的组件模型。