赵姝菊
摘要:JavaBean在基于Java Web的项目开发中发挥着重要的作用,它主要用于封装业务逻辑、构建功能模块,与JSP界面框架相分离,实现并行开发,体现了当今Java Web项目开发的主流MVC开发模式。该文对JavaBean概念、应用特性进行阐述,探索并分析Java? Bean的应用领域、模式。
关键词:JavaBean;Java Web项目开发;JSP;封装;数据库
中图分类号:TP311文献标识码:A文章编号:1009-3044(2012)05-1094-04
JavaBean Applied Research Based on the Java Web Project Development
ZHAO Shu-ju
(Tianjin Coastal Polytechnic College, Tianjin 300451,China)
Abstract: JavaBean plays an important role in Java Web project development, it is mainly used for encapsulating business logic, construct? ing function module, separating with JSP interface framework,and realizing parallel development, it reflects the current mainstream MVC development mode of Java Web project development.This paper describes with concept, Application characteristics of JavaBean,and ex? plore its Application fields and mode.
Key words: JavaBean;Java Web project development;JSP;encapsulate;database
JavaBean,由于“Bean”汉译为“豆”,通常也被称为Java豆。JavaBean概念由Java语言的缔造者Sun Microsystems公司提出,其官方定义为“JavaBean是一个可重复使用的软件部件”。具体来说,JavaBean是一种特殊的Java类,是一种基于Java语言的可重用组件,是一种描述Java Web项目开发的软件组件结构模型,是MVC(Model-View-Controller)体系架构中“M”的体现。
1 JavaBean应用特性
JavaBean与JSP相结合,已成为当今Java Web项目开发的主流开发模式。JavaBean的应用,极大降低了JSP脚本代码量,无限扩充了JSP的功能,实现代码重用,从而使得Java Web项目易于编写、扩展、管理和维护。
1.1 JavaBean与JSP交互模式
JavaBean在Java Web项目开发中,主要用来封装业务逻辑等,如同“豆”的包裹状态一样,JavaBean利用Java语言中“类”的特性,将某个业务逻辑(复杂计算统计功能、数据库连接查询功能等),包装起来,形成一个一个相对独立的模块组件,方便模块功能修改、扩充及重复使用,体现了JavaBean的封装性和重用性,实现了在Java Web项目开发中典型业务逻辑(JavaBean组件)与界面框架表现形式(JSP页面)的分离。
在一个典型的基于Java Web的项目开发中,JSP页面主要用于界面框架的搭建、布局,项目内容的展示方式、效果等,我们通常不会将常见的业务逻辑嵌入到JSP页面中,因为一方面,具备某一特定功能的业务逻辑经常被多个页面反复使用,若每个所涉及的页面都被嵌入该业务逻辑代码,那么势必会造成页面代码冗余,增大系统开销,并容易产生命名冲突,引发项目瘫痪,另一方面,若某个被嵌入进JSP页面的业务逻辑需要修改或扩展,则通常会牵一发而动全身,整体JSP页面框架需要随之改动,与该业务逻辑相关的其他页面也需要随之修改,这样整体项目框架布局可能需要重新搭建,并易引发关联性错误。因此,在Java Web项目开发过程中,我们将业务逻辑与界面分离,业务逻辑开发人员负责开发JavaBean功能代码,设计JavaBean类,而界面开发人员则负责项目界面的设计与实现,再通过生成相关JavaBean类的对象,进行JavaBean类所属方法的调用,最终实现功能与界面的结合,从而提高开发效率和项目性能,使Java Web项目更具扩展性、灵活性和健壮性。简单的JavaBean与JSP交互过程如图1所示。
图1 JavaBean组件与JSP页面的交互
1.2 JavaBean编制特点
从本质上看,JavaBean实际就是Java语言中的一个自定义类,可以在支持Java的任何平台上运行,其语法结构也完全基于Java语法要求,但也有其自身约束和特点。
1)JavaBean是公有类,即该类要用访问权限修饰符public修饰,用以方便JSP页面等访问调用。
2)在JavaBean中若定义构造方法,则此构造方法也必须用public修饰,并且不能带任何参数,若不定义构造方法,则Java编译器会自动构造一个默认的无参构造方法。
3)JavaBean中声明的属性通常用访问权限修饰符private修饰,表示私有属性,其作用域只能在该JavaBean中,JavaBean中声明的方法则用public修饰,表示公有权限,以便和JavaBean外部的JSP页面等进行交互。
4)通常用一组setXXX()方法和getXXX()方法来设置和获取JavaBean中私有属性XXX的值。
5)JavaBean中没有main()主方法(但可以在调试过程中,编写main()方法进行功能测试),因此JavaBean只能通过Java编译器进行编译,生成字节码文件,但不能直接运行出结果。JavaBean就是功能模块的封装,供JSP页面调用从而执行的。
6)JavaBean必须放置在包中,即用package语句定义一个自定义包,放置在JavaBean代码块的第一行。
7)JavaBean编写编译完成后,需要将生成的JavaBean包(内含字节码文件),放在指定的“Tomcat应用程序安装目录webappsJa? va Web项目站点WEB-INFclasses”目录下,方可被加载、调用和执行。
8)如果对已经部署好的JavaBean进行了修改,则必须重新编译JavaBean程序生成字节码文件,并重新启动Tomcat服务器,方可生效。
2 JavaBean在Java Web项目开发中的应用分析
JavaBean在Java Web项目开发中的最典型应用就是针对数据库的封装,包括数据库连接、数据库对应实体模型、数据库查询等功能模块的封装。每个JavaBean功能内部实现过程无需外部了解,但会留有用于外部JSP页面调用的公共接口。我们以数据库连接及查询操作为例,具体分析JavaBean在项目开发中的应用。
2.1用JavaBean封装与数据库的连接
设计并实现JavaBean类——DBConn,形成DBConn.java文件。此文件中,创建了webBeans包,并采用JDBC-ODBC桥的数据库连接方式建立与Microsoft SQL Server 2005的连接。只要在JSP页面中生成DBConn类对象,即自动调用DBConn构造方法,从而实现数据库连接的创建。DBConn.java主体代码如下:
package webBeans;
import java.sql.*;
public class DBConn{
public Connection conn=null;
public DBConn(){
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
conn=DriverManager.getConnection("jdbc:odbc:数据源名称", "sa", "");
}catch(Exception e){
e.printStackTrace();
}
}
}
2.2用JavaBean封装数据库表单实体
在典型Java Web项目开发中,可以将数据库主表单中的数据字段映射成JavaBean文件中的私有属性,将对数据库主表单中记录的操作转化成对JavaBean的操作,从而方便进行数据库结果集的遍历,便于数据库管理,提高开发效率。即设计并实现JavaBean类——DBEntity,形成DBEntity.java文件。此文件中的私有属性名一一对应于数据库表单中的字段名,数据类型要保持一致,并且针对每一个私有属性,都要配有一对setXXX()和getXXX()公有方法,用以写入和读取私有属性的值。DBEntity.java主体代码如下:
package webBeans;
public class DBEntity{
private int id;
private String name;
private String picture;
public int getId(){
return id;
}
public void setId(int id){
this.id=id;
}
……//省略name和picture属性对应的setXXX()和getXXX()方法
}
2.3用JavaBean封装对数据库的具体操作
JSP页面对数据库的具体操作主要包括查询、增加、删除、修改等。设计并实现JavaBean类——DBHandle,形成DBHandle.java文件。在该文件中生成DBConn类对象,建立当前数据库连接,并将所有针对数据库的操作一一编写成公有方法放置在文件中,供相关JSP页面反复调用。文件中的公有方法可随意修改扩充,随调随执行,从而增强数据库操作的灵活性和扩展性,提高开发效率。以查询数据库全部信息为例,建立selectAll()查询方法,执行sql语句,利用while循环将符合查询条件的数据库结果集字段值依次赋给DBEntity类对象的私有属性,完成数据库查询结果集的映射,并形成List链表类对象作为selectAll()方法的返回值,以供JSP页面调用。DBHandle.java主体代码如下:
package webBeans;
import java.sql.*;
import java.util.*;
import webBeans.*;
public class DBHandle{
private Connection conn=null;
private Statement sm=null;
private DBConn jdbc=null;
public DBHandle(){
jdbc=new DBConn();
conn=jdbc.conn;
}
public List selectAll(){
List list=new ArrayList();
DBEntity entity=null;
try{
sm=conn.createStatement();
ResultSet rs=sm.executeQuery("select * from表名order by id");
while(rs.next()){
entity=new DBEntity();
entity.setId(rs.getInt("id"));
entity.setName(rs.getString("name"));
entity.setPicture(rs.getString("picture"));
list.add(entity);
}
}catch(Exception e){
e.printStackTrace();
}
return list;
}
……//省略其他数据库操作的方法
}
2.4 JSP页面调用相关JavaBean文件的设计与实现
在Java Web项目开发中,JSP页面用于整体框架的搭建、信息的展示。设计并实现index.jsp页面,调用DBHandle类中的select? All()方法,用以在JSP页面中动态展示数据库中的全部记录。index.jsp主体代码如下:
<%@page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@page import="webBeans.*"%>
<%
DBHandle handle=new DBHandle();
List list=(List)handle.selectAll();
for(int i=0;i DBEntity entity=(DBEntity)list.get(i); %>
<%
}
%>
2.5 JavaBean与JSP关联分析
在上述JavaBean与JSP应用示例中,通过三个JavaBean文件(DBConn.java、DBEntity.java、DBHandle.java)完成了数据库的连接、映射、具体查询记录等操作,将开发功能模块与页面框架相分离,实现并行开发,大大降低了Java Web项目开发的复杂度。JSP页面(index.jsp)仅需要通过相应公有方法的调用来使用这些功能模块,灵活方便。当然,其他JSP页面也共享所有JavaBean组件,随用随调,保证数据库操作的一致性,减少冗余,提高开发效率。如图2所示。
图2 JavaBean与JSP调用关系图
2.6使用JSP动作元素完成JavaBean的调用
在JSP页面中,除了用page指令元素中import属性引入JavaBean包,并在程序中用new关键字生成JavaBean类对象以外,还可以使用JSP动作元素来生成JavaBean类的实例并进行方法的调用。
当今,在基于Java Web的项目开发中,JavaBean已经成为不可或缺的要素,它与JSP、Servlet相结合,构成Java Web项目开发的典型MVC开发模式,应用便捷灵活,前景广阔。
参考文献:
[1]聂明. Java Web应用开发项目教程[M].北京:电子工业出版社,2009.
[2]刘志成. JSP程序设计实例教程[M].北京:人民邮电出版社,2009.
[3]李兴华,王月清. Java Web开发实战经典[M].北京:清华大学出版社,2010.