快速业务通道

整合JSF、Hibernate、Spring实现用户登录应用 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18

整合JSF、Hibernate、Spring实现用户登录应用

时间:2011-03-14 IT168 骆驼

本文使用的开发包为: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接口:

整合JSF、Hibernate、Spring实现用户登录应用(2)

时间:2011-03-14 IT168 骆驼

3. com.it168.logon.model.dao.impl.UserDAO.java:

package com.it168.logon.model.dao.impl; import java.util.Iterator; import java.util.List; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import com.it168.logon.model.businessobject.Userinfo; import com.it168.logon.model.dao.IUserDAO; public class UserDAO extends HibernateDaoSupport implements IUserDAO { public UserDAO() { super(); } @SuppressWarnings("unchecked") public Userinfo getUser(String username) { Userinfo user = null; List userList = getHibernateTemplate().findByNamedParam( "from Userinfo u where u.username = :username", "username", username); if (userList != null) { Iterator i = userList.iterator(); while (i.hasNext()) { user = (Userinfo) i.next(); } } return user; } }

大家可以看到,UserDAO类继承了HibernateDaoSupport类,HibernateDaoSupport类是Spring中的,该类极大地简化了数据持久化操作。

大家或许注意到:

from Userinfo u where u.username = :username

这和我们平时使用的SQL语句很相似,但这是HQL,它针对的不是表,而是类/对象。既然HQL中使用了Userinfo类,那么Userinfo类又包括哪些内容呢?

4. com.it168.logon.model.businessobject.Userinfo.java:

package com.it168.logon.model.businessobject; @SuppressWarnings("serial

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号