论坛首页 Java版

JSF+EJB3.0(Session Bean)+Hibernate整合开发用户登录程序(附源码)

浏览 679 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
最后更新时间:2008-02-23
对于三者各自的介绍就不在这里了 ,网上文章很多,说的也比我要好。

开发环境声明:
  IDE: Eclipse3.3+Myeclipse6.0
    DataBase: MySQL5.0
    Server:   Jboss4.24GA之前的版本不支持EJB3.0,可能需要补丁,本人没试过

 开发阶段:
   
    数据库名为:logintest  表就一张: userinfo
    字段: id auto_increament,username:varchar  password:varchar工程里有脚本;

可以对照源码来试验 : 
  
  Hibernate:
 新建ejb工程----》 选择3.0 名字: loginejb---->add Hibernate  capabilities... Hibernate的配置不说了(一张表也没必要说)
   New PO : User:这里说下结合Xdoclet来自动生成映射文件 :
   在PO里可以结合一些注释标记: 比如 
/***
* @hibernate.class
* table="userinfo"
* @author sawen21
*
*/

/**
* @hibernate.id
* generator-class="increment"
* @param id
*/

/**
* @hibernate.property
* @return
*/   
  这里就用了三种标记就能完成user.hbm.xml的生成,当然还有很多的特性比如many-to-one one-to-one等,这里用不上,可以到网上查些Xdoclet的Blog,这样可以为你节省很多时间,而且不容易出错。
  添加Xdoclet方法: 选中工程loginejb-->右键---》property-->myeclipse展开---》选择xdoclet-->Add standard..选择standard hibernate即可。
然后选中工程loginejb----右键--》myeclipse--->run xdoclet就能够成功生成了 。

 将user.hbm.xml加到hibernate.cfg.xml中。  <mapping resource="po/User.hbm.xml" />

有HibernateTest.java如果运行成功的话 就证明Hibernate配置成功了 


  
  Session Bean
  新建接口: IUser.java
   package dao;

import po.User;

public interface IUser {

	  public User login(String username,String password);
}


  实现接口类 Userimpl.java

 package dao.daoimpl;

import java.util.List;
import javax.ejb.Remote;
import javax.ejb.Stateless;

import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;

import po.User;
import util.HibernateUtil;
import dao.IUser;


@Remote
@Stateless
public class Userimpl implements IUser {

	public User login(String username, String password) {
		
		try{
			User user=null;
			Session s=HibernateUtil.getSession();
			Query q=s.createQuery("from User u where username=:name and password=:pass");
			q.setString("name", username);
			q.setString("pass", password);
			List l=q.list();
			if(l.size()>0)
				user=(User) l.get(0);
			HibernateUtil.closeSession();
			return user;
		}catch(HibernateException he){
	    	 he.printStackTrace();
	     }
		return null;
	}

}

 


这里注意的是:
@Remote
@Stateless
这里是3.0比之前好用的地方。不再需要建立其他的接口类,代表远程接口,无状态SessionBean



JSF

新建Web Project----> loginweb-------->add JSF capabilities

jsf这里也不太多讲 主要注意的是 faces-config.xml 以及jsf提供的一些UI组件应用。

可以结合上传的源代码来分析。


发布说明:
  1.先从loginejb工程内的脚本执行 
    把mysql驱动拷贝到{%JBOSS_HOME%}/server/default/lib
  2.把loginejb.jar loginweb.war 烤到{%JBOSS_HOME%}/server/default/deploy下
  3.启动Jboss server
  4.测试连接: http://localhost:8080/loginweb/login.faces
   
最后更新时间:2008-02-23
呵呵。。ejb端组件跟Web端应用放在一个工程中开发,对EJB来说肯定是不合理的,可以看看我在CSDN的博客,也写了一个JSF1.2+EJB3的员工CRUD实例,分成ejb,和web两个工程写的。地址
http://blog.csdn.net/qjyong/archive/2008/02/20/2110211.aspx
   
0 请登录后投票
最后更新时间:2008-02-23
呵呵~ 我是 分两个工程的 。。ejb端 : loginejb  web端:loginweb
   
0 请登录后投票
论坛首页 Java版

跳转论坛:
JavaEye推荐