JavaBean

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
54
package 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
    • jsp :专门存放jsp文件
    • js:专门存放外部的js文件
    • css: 专门存放样式文件
    • img : 专门存放图片
    • index.jsp/index.html : 一般是欢迎页面
    • WEB-INF
      -web.xml:web工程的部署描述符
      • lib:所有的jar都存放在此
      • classes:所有的java程序编译后都放在此目录中

        javabean编译后的class文件就放在WEB-INF的classes目录中。

        JavaBean的使用

        在jsp中Javabean使用有两种语法:
  • 使用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
2
3
4
5
6
7
8
9
10
<jsp:useBean id="person" class="com.wanbangee.entties.Person" scope="page">
</jsp:useBean>
<%
person.setPersonId(10);
person.setPersonAge(20);
person.setPersonName("张大炮");
person.setPersonPass("123456");
person.setPersonBirthday(new Date());
%>
<h1><%=person %></h1>

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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

/* 抛弃此种接收参数的方式 */
//String personName = request.getParameter("personName");

<jsp:useBean id="person" class="com.wanbangee.entties.Person" scope="page"></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>

通过程序发现,使用第一种自动匹配的方式肯定是最好用的。

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实际上就是一个小小的组件模型。

-------------本文结束,感谢您的阅读-------------
您的支持将鼓励我继续创作!!