1.5 公共类设计
1.5 公共类设计
在项目开发中会使用类型的形式来封装一些常用的属性和方法,这样可以大大提高代码的重用率,同样也可以方便代码的管理。本系统一共包含7个公共类,分别是DBConnection
类、Page
类、PageUtil
类、Employee
类、Message
类、Reply
类以及Criticism
类。下面来详细介绍这7个类的开发。
1.5.1 封装数据库操作JavaBean开发
在项目开发中,很多地方都需要使用操作数据库,这时就需要在每一个JSP
中获得数据库连接对象。这时我们就希望能够有一个公用类,通过该类能方便地获得数据库连接对象。这个类就是下面要介绍的公共数据库访问连接类。在该类中的所有方法都是静态的,这时候就没必要创建该类的实例对象,直接通过类名就可以调用。该类通常包含4个方法,一个获得方法,用来获得连接对象;3个关闭方法,分别用来关闭连接对象、预处理对象、结果集对象
下面就来分步介绍如何创建公共数据库访问连接类,其创建步骤如下。
(1)导入所需的类,这些类都需要在程序中使用,代码如下所示。
例程1.1代码位置:/JavaPrj_1/src/com/sanqing/util/DBConnection.java
1 | import java.sql.Connection; |
代码中导入了DBConnection
类所需的5个类,分别为Connection
类、DriverManager
类、PreparedStatement
类、ResultSet
类和SQLException
类。
(2)声明常量并赋值,这些常量用来获得数据库连接对象,代码如下所示
例程1.2代码位置:/JavaPrj_1/src/com/sanqing/util/DBConnection.java
1 | private static final String DBDRIVER = "com.mysql.jdbc.Driver" ; //驱动类类名 |
代码第1行声明了一个常量DBDRIVER
,用来表示驱动类的类名。
代码第2行声明了个常量DBURL
,用来表示数据库连接URL
。
代码第3行声明了一个常量DBUSER
,用来表示数据库的用户名。
代码第4行声明了一个常量DBPASSWORD
,用来表示数据库的密码。
(3)创建获得数据库连接对象方法getConnection()
,代码如下所示。
1 | public static Connection getConnection(){ |
代码第4行使用Class
类的forName
注册驱动类com.mysqljdbcDriver
。代码第5行通过DriverManager
类的getConnection
方法,传入数据库连接URL
、数据库用户名以及数据库密码来获得数据库连接对象。
(4)创建关闭连接对象方法cose( Connection conn)
,方法中通过参数获得连接对象,通过调用其close
方法来进行关闭,代码如下所示。
1 | public static void close(Connection conn) {//关闭连接对象 |
代码第2行通过i语句对conn
对象进行判断,如果conn
对象不为空,则调用其close
方法对其进行关闭。
(5)创建关闭预处理对象方法close( PreparedStatement pstm)
,方法中通过参数获得预处理对象,通过调用其cose
方法来进行关闭,代码如下所示。
1 | public static void close(PreparedStatement pstmt) {//关闭预处理对象 |
代码第2行判断预处理对象pstm
是否为空,如果不为空,则调用其close
方法对其进行关闭。
(6)创建关闭结果集对象方法close( Resultset rs)
,方法中通过参数获得结果集对象,通过调用其close
方法来进行关闭,代码如下所示。
1 | public static void close(ResultSet rs) {//关闭结果集对象 |
1.5.2 分页信息类开发
分页信息类用来封装分页的所有信息,如每页显示多少记录、总记录数、总页数、当前页、是否有上一页等等信息
1 | package com.sanqing.util; |
代码第3行至第9行声明了7个属性,分别为everyPage
(每页显示记录数)、totalCount
(总记录数)、totalPage
(总页数)、currentPage
(当前页)、beginIndex
(查询起始点)、hasPrePage
(是否有上一页)以及hasNextPage
(是否有下一页)。代码第10行至第20行自定义了一个构造方法,该构造方法接收分页信息的所有参数,然后对其属性进行设置。
1.5.3 分页辅助类开发
在进行分页的时候,必须知道3个信息,分别是当前页、每页显示记录数以及总记录数只要知道了这3个信息,就可以通过计算得到分页信息的其他信息。这部分计算操作就交给分页辅助类来处理了。
1 | package com.sanqing.util; |
代码第3行创建了静态方法createPage
,该方法接收3个参数,分别为everyPage
、totalCount
以及currentPage
。通过这3个参数然后调用PageUtil
类的其他静态方法即可返回封装好了所有信息的分页对象。代码第13行创建了静态方法getEveryPage
,该方法判断每页显示记录数是否为零,如果为零则设置其值为10。代码第16行创建静态方法getCurrentPage
,该方法判断当前页是否为零,如果为零则设置其值为1。代码第19行创建了静态方法getTotalPage
,该方法判断总页数是否能整除每页显示记录数,如果可以则直接返回总页数除以每页显示记录数,否则在其基础上再加一。代码第28行创建了静态方法getBeginlndex
,该方法通过对当前页减一然后乘以每页显示记录数,从而计算出查询起始点。代码第31行创建了静态方法getAsPrePage
,判断当前页是否为第一页,如果为第一页则返回false
,否则返回true
。代码第34行创建了静态方法getAsNextPage
,判断当前页是否等于最后一页或者等于零,如果等于则返回false
,否则返回true
。
1.5.4 员工信息类
员工信息类封装了员工的所有信息,包括员工编号、员工姓名、员工性别、出生日、办公室电话、住址、录入时间、系统口令、是否为管理层领导信息
1 | public class Employee { |
代码第2行至第11行声明了9个属性,分别为employeeID,EmployeeName,EmployeeSex,employeeBirth,EmployeePhone,EmployeePlace,JoinTime,Password,IsLead
,并添加了其setter
和getter
方法,在这里因为篇幅原因省略了代码,读者可以参考光盘中的代码。
1.5.5 消息信息类
消息信息类封装了消息的所有信息,包括消息ID
、消息标题、消息内容、发布人ID
、发布时间信息。
1 | public class Message { |
代码第2行至第6行声明了5个属性,分别为messaged,MessageTitle,MessageContentemployeeID,PublishTime
。代码第7行添加了所有属性的etr
和getter
方法。
1.5.6 回复信息类
回复信息类封装了回复的所有信息,包括消息回复ID
、回复内容、回复人ID
、回复时间以及消息ID
。
1 | public class Reply { |
代码中声明了5个属性分别为reply,ReplyContent,,EmployeeID,ReplyTime,MessageID
代码第7行为所有属性添加了setter
和getr
方法。
1.5.7 批复信息类
1 | package com.sanqing.bean; |
代码中声明了5个属性,分别为criticism,CriticismContent,EmployeeID,CriticismTime,messageID
。代码第7行为所有属性添加了setter
和getter
方法。