本文使用的开发包为:jsf 1.2_04+hibernate 3.2.2.ga+spring 2.0.5,开发环境为jdk 1.5+myeclipse 6.0+mysql 5.0。
一、三层设计
本文实现的功能虽然简单,但是仍然采用了三层的设计:
1)数据访问层:本文使用Hibernate实现数据访问。
2)业务逻辑层:本文使用Spring组织业务逻辑。
3)表示层,本文使用JSF进行前台显示。
分层的好处在于:有利于系统的扩展性、伸缩性和维护性。
下面让我们演示每一层具体是如何做的,在开始之前,首先看一下我们的数据库设计:
实现登录功能,需要一张userinfo表,包含id, username和password字段。
1. logon.sql:#
# Database structure for database 'logon'
#
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `logon` /*!40100 DEFAULT CHARACTER SET latin1 */;
USE logon;
#
# Table structure for table 'userinfo'
#
CREATE TABLE /*!32312 IF NOT EXISTS*/ `userinfo` (
`id` int(11) NOT NULL auto_increment,
`username` varchar(100) NOT NULL default '',
`password` varchar(100) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
#
# Dumping data for table 'userinfo'
#
/*!40000 ALTER TABLE userinfo DISABLE KEYS;*/
LOCK TABLES userinfo WRITE;
REPLACE INTO userinfo (id, username, password) VALUES (1,'admin','admin');
UNLOCK TABLES;
/*!40000 ALTER TABLE userinfo ENABLE KEYS;*/
好了,让我们开始吧!
二、数据访问层
因为只有一张userinfo表,所以数据访问部分也不复杂。
首先,我们定义了一个IUserDAO接口,用于根据用户名得到该用户信息。
2. com.it168.logon.model.dao.IUserDAO.java:
package com.it168.logon.model.dao;
import com.it168.logon.model.businessobject.Userinfo;
public interface IUserDAO {
public Userinfo getUser(String username);
}
接着,UserDAO类实现了IUserDAO接口: