喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 喜悦证交所 | 帮助

RSS 订阅当前论坛  

上一主题 下一主题
 13  1/2  1  2  > 
     
标题: struts+hibernate例子(原创)  
 
雨伞 (时间过的真快)
版主
Rank: 7Rank: 7Rank: 7
CTO


UID 25085
精华 6
积分 29921
帖子 4256
金钱 29861 喜悦币
威望 60
人脉 0
阅读权限 100
注册 2003-12-8
来自 梅州
状态 离线
struts+hibernate例子(原创)

hibernate+struts结合简单例子
作者:雨伞(geezer)
2004/11/12

上次介绍了hibernate的基本知识,现在我们将它用在实际项目开发中,
我们用struts与它结合来做一个简单的应用。例子所需要的lib文件我都没有放进去,因为太大了(压缩以后近10M)论坛不让上传,呵呵,你们自己把struts与hibernate的jar文件放进去吧。

配置环境:
HIBERNATE 2.1(上次遇到有朋友因为版本不同折磨了大半天,这次注意了)
STRUTS 1.1
JBUILDER X
MYSQL 4.1.7


其实hibernate与struts结合起来是很不错的选择,而且使用与配置起来都简单,几步就完成了。
例子压缩包里一共有5个JAVA类文件(BeanItem.java,h_bean.java,h_connection.java,Init.java,MainServlet.java),


BeanItem.java是一个Bean,从数据库取出结果以后创建相应总记录数的BeanItem数组,然后再压入request对象中,最后利用RequestDispatcher(直接用ActionMapping对象的findForward方法也可以,只要在struts-config加了<forward>标签既可)传会JSP页面(ok.jsp)。
h_bean.java是hibernate与数据库表映射的类,因为上次我已经介绍过了hibernate的基本知识所以这里就不解释了。
h_connection.java是管理hibernate的类,取SessionFactory用getConnection方法,注意里面有一个static块,里面查询JNDI树得到绑定的SessionFactory实例。
Init.java是Struts的一个扩展类,继承自PlugIn,将这个类加进Struts的配置文件(struts-config.xml里的<struts-config>里加上
<plug-in className="database.Init" />这一行既可),以后每次启动服务器的时候都会先执行这个类,当然只执行一次,因为hibernate取SessionFactory的时候要花久一点的时间,所以为了不每次使用时都去重新生成SessionFactory,我们将它改成PlugIn,然后绑在目录树中,这样上下文其他地方需要用到的时候直接lookup就可以了。里面有init与destroy方法,也就是说在容器停止的时候可以自动在destroy方法里删除。(好象有点罗嗦了 )
MainServlet.java是Struts的Action子类,例子里的操作都在这里完成,包括取SessionFactory,取数据,转向等等。


为了与struts结合使用,这里需要增加一个hibernate.cfg.xml文件(其实有好几种方法,这里只讲这一种常用的),放在classes目录下,注意里面的
<mapping resource="database/h_bean.hbm.xml"/>
每一个表的映射都要添加进这个文件里,新增一行既可。




------------------------------
寻找兼职!
------------------------------
2005-1-1 07:06 PM#1
查看资料  Blog  发短消息  QQ  顶部
 
zhu1230 (zhu1230)
金牌会员
Rank: 6Rank: 6
老会员



UID 13114
精华 2
积分 2375
帖子 2409
金钱 2355 喜悦币
威望 20
人脉 0
阅读权限 70
注册 2002-3-7
来自 南京
状态 离线
[推荐阅读] 碎了翡翠,圆了月亮[z]
快餐式的教程

1。简单看了一下,DTO的转换用不着这么烦琐。
2。ACTION的实现写的有问题。这样很容易误导新手的。




Im vicent now.
2005-2-23 08:05 PM#2
查看资料  发短消息  QQ  顶部
 
whymecant (whymecant)
高级会员
Rank: 4
资深会员



UID 29907
精华 0
积分 658
帖子 658
金钱 658 喜悦币
威望 0
人脉 0
阅读权限 50
注册 2004-7-7
来自 浙江杭州
状态 离线
[推荐阅读] 斑主进
说话别这么精炼,把问题指正出来才是最重要的
把经验共享给大家,你这样说了别人还是会误导,还不如不说
2005-3-8 11:56 AM#3
查看资料  发短消息  顶部
 
zhu1230 (zhu1230)
金牌会员
Rank: 6Rank: 6
老会员



UID 13114
精华 2
积分 2375
帖子 2409
金钱 2355 喜悦币
威望 20
人脉 0
阅读权限 70
注册 2002-3-7
来自 南京
状态 离线
[推荐阅读] 怎样取消mysql数据库中不连续的记录号.....救命
你还知道面子的啊?FAINT
我只是和雨伞说。他理解就行了。




Im vicent now.
2005-3-8 12:34 PM#4
查看资料  发短消息  QQ  顶部
 
whymecant (whymecant)
高级会员
Rank: 4
资深会员



UID 29907
精华 0
积分 658
帖子 658
金钱 658 喜悦币
威望 0
人脉 0
阅读权限 50
注册 2004-7-7
来自 浙江杭州
状态 离线
[推荐阅读] 怎样从数据库查询结果中随便选取一个?
哟,火啦?为什么要火呢?说说看
2005-3-8 01:08 PM#5
查看资料  发短消息  顶部
 
雨伞 (时间过的真快)
版主
Rank: 7Rank: 7Rank: 7
CTO


UID 25085
精华 6
积分 29921
帖子 4256
金钱 29861 喜悦币
威望 60
人脉 0
阅读权限 100
注册 2003-12-8
来自 梅州
状态 离线
[推荐阅读] 在java语言我怎么读出mysql数据库的数据。请高手帮忙。
这个写的很倡足,没有太多时间去改了,加上一般新手不会直接就来学HIBERNATE与STRUTS结合的。有两个都有用过那么结合起来就很顺利的,感谢zhu1230与whymecant 的建议。



------------------------------
寻找兼职!
------------------------------
2005-3-8 03:12 PM#6
查看资料  Blog  发短消息  QQ  顶部
 
lightwiter (lightwiter)
新手上路
Rank: 1
初级会员



UID 23181
精华 0
积分 21
帖子 21
金钱 21 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2003-9-14
状态 离线
[推荐阅读] 有人愿意有偿做一个php后台吗?
好像绑定到JNDI会出错哎,
<property name="session_factory_name">HibernateSessionFactory</property>
有这一名就提示已经有绑定了.
没有这一名又说没有配置jndi名称不能绑定.我没有搞过jndi.不知道哪位可以告诉我要怎么设.
2005-7-22 11:57 AM#7
查看资料  访问主页  发短消息  QQ  顶部
 
lightwiter (lightwiter)
新手上路
Rank: 1
初级会员



UID 23181
精华 0
积分 21
帖子 21
金钱 21 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2003-9-14
状态 离线
[推荐阅读] 请问各位高手如何在linux中发送邮件??
11:09:53,921  INFO SessionFactoryObjectFactory:82 - Not binding factory to JNDI,
no JNDI name configured
-----------------err--------------------
java.lang.UnsupportedOperationException: The user must supply a JDBC connection
        at net.sf.hibernate.connection.UserSuppliedConnectionProvider.getConnect
ion(UserSuppliedConnectionProvider.java:32)
        at net.sf.hibernate.impl.BatcherImpl.openConnection(BatcherImpl.java:292
)
        at net.sf.hibernate.impl.SessionImpl.connect(SessionImpl.java:3373)
        at net.sf.hibernate.impl.SessionImpl.connection(SessionImpl.java:3333)
        at net.sf.hibernate.impl.BatcherImpl.prepareQueryStatement(BatcherImpl.j
ava:67)
2005-7-22 11:58 AM#8
查看资料  访问主页  发短消息  QQ  顶部
 
lightwiter (lightwiter)
新手上路
Rank: 1
初级会员



UID 23181
精华 0
积分 21
帖子 21
金钱 21 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2003-9-14
状态 离线
[推荐阅读] 新的模板类解析时间要20毫秒,郁闷ing
加了出的异常:
java.lang.RuntimeException: Exception binding SessionFactory to JNDI: Name HibernateSessionFactory is already bound in this Context
        at database.Init.init(Init.java:53)
        at org.apache.struts.action.ActionServlet.initModulePlugIns(ActionServlet.java:1158)
        at org.apache.struts.action.ActionServlet.init(ActionServlet.java:473)
        at javax.servlet.GenericServlet.init(GenericServlet.java:211)
2005-7-22 12:02 PM#9
查看资料  访问主页  发短消息  QQ  顶部
 
ITers (ITers)
新手上路
Rank: 1
初级会员



UID 64725
精华 0
积分 1
帖子 1
金钱 1 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2005-6-14
状态 离线
[推荐阅读] 我要去做水暖工
gggggggggggggggggggggg
2005-8-3 08:50 AM#10
查看资料  发短消息  顶部
 13  1/2  1  2  > 
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 


Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 0.027219 second(s), 6 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP