Posted on 2007-09-30 09:40
诗特林 阅读(40684)
评论(81) 编辑 收藏 所属分类:
Struts
应IT168写的专稿.http://tech.it168.com/j/2007-09-24/200709240935075.shtml
Struts2+Spring2+Hibernate3 web应用示例(一)
Struts作为MVC 2的Web框架,自推出以来不断受到开发者的追捧,得到广泛的应用。作为最成功的Web框架,Struts自然拥有众多的优点:MVC 2模型的使用、功能齐全的标志库(Tag Library)、开放源代码。而Spring的出现,在某些方面极大的方面了Struts的开发。同时,Hibernate作为对象持久化的框架,能显示的提高软件开发的效率与生产力。这三种流行框架的整合应用,可以发挥它们各自的优势,使软件开发更加的快速与便捷。
struts2发布已经很久了,但关于如何使用它的教程及实例并不多。特别是与Spring及Hibernate等流行框架的集成,并不多见。现在就将笔者使用Myeclipse工具应用struts2 + spring2 + hibernate3 实现CRUD操作的步骤一一纪录下来,为初学者少走弯路略尽绵薄之力!在本文中,笔者将Struts2.0.6、Spring2.0.6和Hibernate3.1进行整合,希望通过这样的整合示例,让读者了解这些框架各自的特点,以便于在自己的项目中,根据实际情况,尽快的过渡到Struts2的时代。本文的内容基于Struts2.0.6。
一、 准备工作
spring2与1.x区别不大,可以平滑的过度,笔者也是把spring1.28换成了spring2.0.6,算是升级到spring 2.0了。struts2基本就是webwork2.2,与以前的struts1.x可以说没任何关系了。因为是第一次用struts2,也是第一次用webwork,所以有很多不完善,不规范的地方,还望大家来拍砖。
开发环境:MyEclipse5.0+Eclipse3.2+JDK5.0+
Tomcat5.5+struts2+Spring2.0.6+Hibernate3.1。本示例通过对一个图书进行管理的系统,提供基本的增加、删除、修改、查询等功能。
lib包需要以下右图所示的这些包。其中Struts2.0.6的下载地址为:
![](/images/blogjava_net/sterning/Struts2-First-1.jpg)
http://people.apache.org/builds/struts/2.0.6
Hibernate3.1的下载地址为:
http://www.hibernate.org
spring2.0.6的下载地址为:
http://www.springframework.org
使用的数据库为mysql 5.0,使用的JDBC驱动JAR包为:mysql-connection-java-5.0.4-bin
创建数据表的sql语句为:
create database game
CREATE TABLE `books` (
`book_id` int(11) NOT NULL default '0',
`book_name` varchar(200) character set gb2312 default NULL,
`book_author` varchar(100) character set gb2312 default NULL,
`book_publish` varchar(100) character set gb2312 default NULL,
`book_date` date default NULL,
`book_isbn` varchar(20) default NULL,
`book_page` int(11) default NULL,
`book_price` decimal(10,2) default NULL,
`book_content` varchar(100) character set gb2312 default NULL,
PRIMARY KEY (`book_id`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk ROW_FORMAT=COMPRESSED;![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
二、 建立公共类
1、AbstractAction类
Struts2和Struts1.x的差别,最明显的就是Struts2是一个pull-MVC架构。Struts1.x 必须继承org.apache.struts.action.Action或者其子类,表单数据封装在FormBean中。Struts 2无须继承任何类型或实现任何接口,表单数据包含在Action中,通过Getter和Setter获取。
虽然,在理论上Struts2的Action无须实现任何接口或者是继承任何的类,但是,在实际编程过程中,为了更加方便的实现Action,大多数情况下都会继承com.opensymphony.xwork2.ActionSupport类,并且重载(Override)
package com.sterning.commons;
![](/Images/OutliningIndicators/None.gif)
import com.opensymphony.xwork2.ActionSupport;
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
public class AbstractAction extends ActionSupport
{
}
![](/Images/OutliningIndicators/None.gif)
com.sterning.commons.AbstractAction.java
参考JavaDoc,可知ActionSupport类实现了接口:
com.opensymphony.xwork2.Action
com.opensymphony.xwork2.LoaleProvider
com.opensymphony.xwork2.TextProvider
com.opensymphony.xwork2.Validateable
com.opensymphony.xwork2.ValidationAware
com.uwyn.rife.continuations.ContinuableObject
java.io.Searializable
java.lang.Cloneable
2、Pager分页类
为了增加程序的分页功能,特意建立共用的分页类。
package com.sterning.commons;
![](/Images/OutliningIndicators/None.gif)
import java.math.*;
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
public class Pager
{
private int totalRows; //总行数
private int pageSize = 5; //每页显示的行数
private int currentPage; //当前页号
private int totalPages; //总页数
private int startRow; //当前页在数据库中的起始行
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
public Pager()
{
}
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
public Pager(int _totalRows)
{
totalRows = _totalRows;
totalPages=totalRows/pageSize;
int mod=totalRows%pageSize;
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
if(mod>0)
{
totalPages++;
}
currentPage = 1;
startRow = 0;
}
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
public int getStartRow()
{
return startRow;
}
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
public int getTotalPages()
{
return totalPages;
}
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
public int getCurrentPage()
{
return currentPage;
}
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
public int getPageSize()
{
return pageSize;
}
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
public void setTotalRows(int totalRows)
{
this.totalRows = totalRows;
}
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
public void setStartRow(int startRow)
{
this.startRow = startRow;
}
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
public void setTotalPages(int totalPages)
{
this.totalPages = totalPages;
}
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
public void setCurrentPage(int currentPage)
{
this.currentPage = currentPage;
}
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
public void setPageSize(int pageSize)
{
this.pageSize = pageSize;
}
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
public int getTotalRows()
{
return totalRows;
}
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
public void first()
{
currentPage = 1;
startRow = 0;
}
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
public void previous()
{
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
if (currentPage == 1)
{
return;
}
currentPage--;
startRow = (currentPage - 1) * pageSize;
}
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
public void next()
{
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
if (currentPage < totalPages)
{
currentPage++;
}
startRow = (currentPage - 1) * pageSize;
}
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
public void last()
{
currentPage = totalPages;
startRow = (currentPage - 1) * pageSize;
}
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
public void refresh(int _currentPage)
{
currentPage = _currentPage;
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
if (currentPage > totalPages)
{
last();
}
}
}
![](/Images/OutliningIndicators/None.gif)
com.sterning.commons.Pager.java
同时,采用PagerService类来发布成为分页类服务PagerService,代码如下:
同时,采用PagerService类来发布成为分页类服务PagerService,代码如下:
package com.sterning.commons;
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
public class PagerService
{
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
public Pager getPager(String currentPage,String pagerMethod,int totalRows)
{
// 定义pager对象,用于传到页面
Pager pager = new Pager(totalRows);
// 如果当前页号为空,表示为首次查询该页
// 如果不为空,则刷新pager对象,输入当前页号等信息
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
if (currentPage != null)
{
pager.refresh(Integer.parseInt(currentPage));
}
// 获取当前执行的方法,首页,前一页,后一页,尾页。
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
if (pagerMethod != null)
{
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
if (pagerMethod.equals("first"))
{
pager.first();
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
} else if (pagerMethod.equals("previous"))
{
pager.previous();
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
} else if (pagerMethod.equals("next"))
{
pager.next();
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
} else if (pagerMethod.equals("last"))
{
pager.last();
}
}
return pager;
}
}
![](/Images/OutliningIndicators/None.gif)
com.sterning.commons.PagerService.java
未完待续,下节开始编写数据持久化层.........
评论
# re: Struts2+Spring2+Hibernate3 web应用示例(一)[未登录] 回复 更多评论
2007-09-30 09:48 by
顶一下!
# re: Struts2+Spring2+Hibernate3 web应用示例(一) 回复 更多评论
2007-09-30 10:48 by
支持!
# re: Struts2+Spring2+Hibernate3 web应用示例(一) 回复 更多评论
2007-09-30 13:52 by
国庆了,祝楼主国庆快乐
# re: Struts2+Spring2+Hibernate3 web应用示例(一) 回复 更多评论
2007-09-30 21:03 by
学习了,现在在学webwork2~~
# re: Struts2+Spring2+Hibernate3 web应用示例(一)[未登录] 回复 更多评论
2007-10-04 15:14 by
good,不错,期待更多与struts2和webwork相关的。
# re: Struts2+Spring2+Hibernate3 web应用示例(一)[未登录] 回复 更多评论
2007-10-08 21:39 by
导入你你提供的源码,包也按要求加入了,我的struts2.0.9,提示说三个jsp文件都找不"/struts-tags"。。。。。。。。。。
# re: Struts2+Spring2+Hibernate3 web应用示例(一)[未登录] 回复 更多评论
2007-10-09 10:38 by
@hehe
如果还不行的话,请留下email,我将整个包含在jar包的代码发送给你.
# re: Struts2+Spring2+Hibernate3 web应用示例(一) 回复 更多评论
2007-10-09 13:06 by
运行不了啊
发给包行啊?
yangjianxiang2@163.com
谢谢
# re: Struts2+Spring2+Hibernate3 web应用示例(一) 回复 更多评论
2007-10-09 13:26 by
yangjianxiang2@163.com
谢谢
# re: Struts2+Spring2+Hibernate3 web应用示例(一) 回复 更多评论
2007-10-09 14:24 by
包解压 出错
再发下行么?
谢谢
yangjianxiang2@163.com
# re: Struts2+Spring2+Hibernate3 web应用示例(一) 回复 更多评论
2007-10-09 19:27 by
我用的是Struts2.0.7,导入你的例子后,Resin启动就出错了。你打个完整的包给我好吗?
# re: Struts2+Spring2+Hibernate3 web应用示例(一) 回复 更多评论
2007-10-09 19:28 by
我用的是Struts2.0.7,导入你的例子后,Resin启动就出错了。你打个完整的包给我好吗?
EMAIL:netseas@163.com
# re: Struts2+Spring2+Hibernate3 web应用示例(一)[未登录] 回复 更多评论
2007-10-18 13:04 by
请打一份给我,THS
shuisheng.cao@inforlion.com.cn
# re: Struts2+Spring2+Hibernate3 web应用示例(一)[未登录] 回复 更多评论
2007-10-24 20:14 by
打个完整的包给我吧,谢谢
shuishou543@sina.com
# re: Struts2+Spring2+Hibernate3 web应用示例(一) 回复 更多评论
2007-10-28 00:57 by
将爱心进行到底,也给我发一份吧,先致谢了knowless.zh@163.com
# re: Struts2+Spring2+Hibernate3 web应用示例(一) 回复 更多评论
2007-10-30 17:11 by
我已经搭建起来了,不知道为什么进入增加和修改页面时很慢,查询和翻页比较快,请斑竹或那位大侠指点一下.谢谢.
邮件或msn: wanliyun1110@hotmail.com
# re: Struts2+Spring2+Hibernate3 web应用示例(一) 回复 更多评论
2007-10-30 22:34 by
I can not deploy it.
SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/spring-context/applicationContext.xml]: Invocation of init method failed; nested exception is org.hibernate.HibernateException: Hibernate Dialect must be explicitly set
Caused by: org.hibernate.HibernateException: Hibernate Dialect must be explicitly set
at org.hibernate.dialect.DialectFactory.determineDialect(
# re: Struts2+Spring2+Hibernate3 web应用示例(一) 回复 更多评论
2008-01-21 20:21 by
打个完整的包给我吧,谢谢
Lemuel2525@126.com
# re: Struts2+Spring2+Hibernate3 web应用示例(一) 回复 更多评论
2008-01-31 17:33 by
Thank you very much for providing the sample
# re: Struts2+Spring2+Hibernate3 web应用示例(一) 回复 更多评论
2008-02-10 23:39 by
e_hang@sina.com.cn
发个包吧,谢谢!
# re: Struts2+Spring2+Hibernate3 web应用示例(一) 回复 更多评论
2008-02-10 23:47 by
刚发现你这个好东西,弄了好久还是运行不了,楼主发个完整的包给我吧,谢谢!
e_hang@sina.com.cn
# re: Struts2+Spring2+Hibernate3 web应用示例(一) 回复 更多评论
2008-02-22 22:17 by
打个完整的包给我吧,谢谢
good5168@163.com
# re: Struts2+Spring2+Hibernate3 web应用示例(一) 回复 更多评论
2008-02-26 16:49 by
也给我发一份完整包吧 谢谢楼主
wy-shaka@hotmail.com
# re: Struts2+Spring2+Hibernate3 web应用示例(一) 回复 更多评论
2008-02-27 22:51 by
弄了两天,没弄出来,着急,!!!为何调的时候会在book.hbm.xml的<class name="com.sterning.books.model.Books" table="books">中的books提示"cannt resolve table books"呢,麻烦楼主发个完整的包给我吧,xiaohuiwork@126.com,谢谢!
# re: Struts2+Spring2+Hibernate3 web应用示例(一)[未登录] 回复 更多评论
2008-03-01 15:28 by
我正急用,写论文,也打个完整的包给我吧谢谢了我的邮箱happycatcl@yahoo.cn
# re: Struts2+Spring2+Hibernate3 web应用示例(一)[未登录] 回复 更多评论
2008-03-03 10:32 by
cscpswang@qq.com
整套包
# re: Struts2+Spring2+Hibernate3 web应用示例(一)[未登录] 回复 更多评论
2008-03-14 14:44 by
麻烦传给我一份,谢谢了;
onlyloveyou937@sohu.com
# re: Struts2+Spring2+Hibernate3 web应用示例(一) 回复 更多评论
2008-03-15 00:34 by
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: org.springframework.jdbc.UncategorizedSQLException: Hibernate operation: Cannot open connection; uncategorized SQLException for SQL [???]; SQL state [null]; error code [0]; Cannot create PoolableConnectionFactory (Communications link failure due to underlying exception:
** BEGIN NESTED EXCEPTION **
java.net.SocketException
MESSAGE: java.net.ConnectException: Connection refused: connect
调试有上面的错误信息,能发个完整包给我么
hncs48hours@126.com
谢谢!
# re: Struts2+Spring2+Hibernate3 web应用示例(一) 回复 更多评论
2008-03-15 00:36 by
我用的是SQL server 2000
hibernate以及数据库该怎么弄?
# re: Struts2+Spring2+Hibernate3 web应用示例(一) 回复 更多评论
2008-03-15 18:12 by
导入到myeclipse 6 中提示hibernate不是一个myeclipse工程,这问题怎么解决?难道必须要搭建eclipse-myeclipse环境才可以么?
# re: Struts2+Spring2+Hibernate3 web应用示例(一)[未登录] 回复 更多评论
2008-03-30 00:00 by
非常感谢!楼主好人啊!
对了,麻烦楼主件事好吗?我不会下ognl的源码,可以发一个到我的邮箱吗?5515068@qq.com 谢谢了!!!
# re: Struts2+Spring2+Hibernate3 web应用示例(一)[未登录] 回复 更多评论
2008-04-17 21:44 by
将爱心进行到底,也给我发一份吧,先致谢了richard-cao945@163.com
# re: Struts2+Spring2+Hibernate3 web应用示例(一) 回复 更多评论
2008-04-29 10:10 by
真好啊,搂主业发一份给我吧,谢谢啦,antiwar66@163.com
# re: Struts2+Spring2+Hibernate3 web应用示例(一) 回复 更多评论
2008-05-15 14:23 by
我也正在学习中,希望楼主能给包发给我
谢谢!!!
# re: Struts2+Spring2+Hibernate3 web应用示例(一) 回复 更多评论
2008-05-15 14:25 by
我的邮箱diyi116@163.com
# re: Struts2+Spring2+Hibernate3 web应用示例(一) 回复 更多评论
2008-05-21 16:36 by
你好,首先感谢楼主辛勤劳作,源码下载不了。请放个源码给我
email:dql206@163.com
# re: Struts2+Spring2+Hibernate3 web应用示例(一) 回复 更多评论
2008-05-21 17:34 by
您好!谢谢您的无私奉献!能发一份儿给我嘛!邮箱是wd_ww_w@yahoo.com.cn
# re: Struts2+Spring2+Hibernate3 web应用示例(一) 回复 更多评论
2008-05-21 18:18 by
不错....
加油
# re: Struts2+Spring2+Hibernate3 web应用示例(一)[未登录] 回复 更多评论
2008-05-27 09:45 by
希望楼主给我也发一份 !非常感谢 rex.hao@gmail.com
# re: Struts2+Spring2+Hibernate3 web应用示例(一)[未登录] 回复 更多评论
2008-06-11 15:21 by
希望楼主给我也发一份 !非常感谢 mysoft_ok@126.com
# re: Struts2+Spring2+Hibernate3 web应用示例(一) 回复 更多评论
2008-06-16 11:55 by
希望楼主给我也发一份 !非常感谢 oceanyu@126.com
# re: Struts2+Spring2+Hibernate3 web应用示例(一) 回复 更多评论
2008-06-27 16:27 by
谢谢啊,真的很不错!
# re: Struts2+Spring2+Hibernate3 web应用示例(一)[未登录] 回复 更多评论
2008-07-14 14:09 by
您好,如何用struts2的标签调用JAVA的静态方法?
<s:if test="org.apache.WebUtil.getCurrUser().isLoginStatus()">
欢迎您,<s:text name="org.apache.WebUtil.getCurrUser().getNickName()"/>
</s:if>
这是我的想法,但是不行。:(
还望指教。
# re: Struts2+Spring2+Hibernate3 web应用示例(一) 回复 更多评论
2008-09-07 23:05 by
楼主,可以给我份吗?希望不会迟了就没有了。写感谢楼主咯
# re: Struts2+Spring2+Hibernate3 web应用示例(一) 回复 更多评论
2008-09-14 23:43 by
帮帮,楼主发个完整的包给我吧,谢谢!
辛苦了。
sw9408@163.com
本人现正干java,希望能跟楼主交个朋友 我的qq 120372298
# re: Struts2+Spring2+Hibernate3 web应用示例(一) 回复 更多评论
2008-10-17 17:24 by
请楼主也给我一份。luoyexian@163.com 谢谢
# re: Struts2+Spring2+Hibernate3 web应用示例(一) 回复 更多评论
2008-10-22 10:18 by
commons-collections
commons-collections-2.1.1
commons-dbcp
commons-dbcp-1.2.1
commons-logging
commons-logging-1.0.4
logging-pool
logging-pool-1.2
请问这4对jar包,我只用其中的一个行不行?
# re: Struts2+Spring2+Hibernate3 web应用示例(一) 回复 更多评论
2008-10-31 13:16 by
我也做了一个Struts2+Spring2+Hibernate3 的购书的,可以不知道怎么会事,后面出问题了,就是jsp跳进Action中不做处理直接跳入INPUT对应的页面。而且,如果我不用INPUT就struts.xml就报错。不知道为什么。
请帮帮忙。我的QQ是364215450
# re: Struts2+Spring2+Hibernate3 web应用示例(一) 回复 更多评论
2008-11-18 11:21 by
你好。可以发一份给我吗?谢谢 li2004-7-23@163.com
# re: Struts2+Spring2+Hibernate3 web应用示例(一) 回复 更多评论
2008-11-18 14:47 by
@李志强
可以!我的可以跑了。很好的
# re: Struts2+Spring2+Hibernate3 web应用示例(一) 回复 更多评论
2008-11-28 16:22 by
你好。可以发一份给我吗?谢谢 liyinfei6688@163.com
# re: Struts2+Spring2+Hibernate3 web应用示例(一) 回复 更多评论
2009-02-12 15:16 by
楼主好有才啊!
# re: Struts2+Spring2+Hibernate3 web应用示例(一)[未登录] 回复 更多评论
2009-02-26 22:48 by
请发一份给我。
chenlian1226@163.com
# re: Struts2+Spring2+Hibernate3 web应用示例(一)[未登录] 回复 更多评论
2009-03-02 15:48 by
严重: Context startup failed due to previous errors
有我一份啊,辛苦了~!
davidgyg826@gmail.com
# re: Struts2+Spring2+Hibernate3 web应用示例(一)[未登录] 回复 更多评论
2009-03-03 14:15 by
哥们, 您好, 看了您做的东西, 很好, 可惜我这里跑不起来 难道是和我的环境有关系吗 能帮忙下吗。 我Q 531608565 谢谢您。。
# re: Struts2+Spring2+Hibernate3 web应用示例(一) 回复 更多评论
2009-03-18 09:50 by
看了你的介绍受益匪浅,可是运行你的程序老是报包错误,你给看看,实在不行发一个完整的给我,邮箱:q_c114@163.com,谢谢了,下面是异常信息
java.lang.NoSuchMethodError: net.sf.cglib.proxy.Enhancer.setInterceptDuringConstruction(Z)V
at org.hibernate.proxy.CGLIBLazyInitializer.getProxyFactory(CGLIBLazyInitializer.java:118)
at org.hibernate.proxy.CGLIBProxyFactory.postInstantiate(CGLIBProxyFactory.java:41)
at org.hibernate.tuple.PojoEntityTuplizer.buildProxyFactory(PojoEntityTuplizer.java:161)
at org.hibernate.tuple.AbstractEntityTuplizer.<init>(AbstractEntityTuplizer.java:131)
at org.hibernate.tuple.PojoEntityTuplizer.<init>(PojoEntityTuplizer.java:55)
at org.hibernate.tuple.TuplizerLookup.create(TuplizerLookup.java:64)
at org.hibernate.tuple.EntityMetamodel.<init>(EntityMetamodel.java:257)
at org.hibernate.persister.entity.AbstractEntityPersister.<init>(AbstractEntityPersister.java:412)
at org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:108)
at org.hibernate.persister.PersisterFactory.createClassPersister(PersisterFactory.java:55)
at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:216)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1176)
at org.springframework.orm.hibernate3.LocalSessionFactoryBean.newSessionFactory(LocalSessionFactoryBean.java:805)
09:21:37,187 WARN [PojoEntityTuplizer] could not create proxy factory for:com.sterning.books.model.Books
org.hibernate.HibernateException: CGLIB Enhancement failed: com.sterning.books.model.Books
at org.hibernate.proxy.CGLIBLazyInitializer.getProxyFactory(CGLIBLazyInitializer.java:132)
at org.hibernate.proxy.CGLIBProxyFactory.postInstantiate(CGLIBProxyFactory.java:41)
at org.hibernate.tuple.PojoEntityTuplizer.buildProxyFactory(PojoEntityTuplizer.java:161)
at org.hibernate.tuple.AbstractEntityTuplizer.<init>(AbstractEntityTuplizer.java:131)
at org.hibernate.tuple.PojoEntityTuplizer.<init>(PojoEntityTuplizer.java:55)
at org.hibernate.tuple.TuplizerLookup.create(TuplizerLookup.java:64)
at org.hibernate.tuple.EntityMetamodel.<init>(EntityMetamodel.java:257)
at org.hibernate.persister.entity.AbstractEntityPersister.<init>(AbstractEntityPersister.java:412)
at org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:108)
at org.hibernate.persister.PersisterFactory.createClassPersister(PersisterFactory.java:55)
at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:216)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1176)
at org.springframework.orm.hibernate3.LocalSessionFactoryBean.newSessionFactory(LocalSessionFactoryBean.java:805)
at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:745)
at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:134)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1201)
# re: Struts2+Spring2+Hibernate3 web应用示例(一) 回复 更多评论
2009-04-22 15:55 by
你真厉害 我老崇拜你了
# re: Struts2+Spring2+Hibernate3 web应用示例(一)[未登录] 回复 更多评论
2009-05-14 21:09 by
大虾,能不能做个maven版本的让我们学习学习
# re: Struts2+Spring2+Hibernate3 web应用示例(一)[未登录] 回复 更多评论
2009-05-16 14:31 by
楼主,我的邮箱supernebula@126.com,正在学习java,发份源码好好学习,谢谢
# re: Struts2+Spring2+Hibernate3 web应用示例(一) 回复 更多评论
2009-05-31 17:42 by
你好。很好的介绍,可以发一份给我吗?谢谢 zhufei1112@yahoo.com.cn
# re: Struts2+Spring2+Hibernate3 web应用示例(一)[未登录] 回复 更多评论
2009-06-01 14:03 by
楼主,我好久没用Java想学习学习发我一份可以么?
我邮箱jacksang@yeah.net谢谢
# re: Struts2+Spring2+Hibernate3 web应用示例(一) 回复 更多评论
2009-06-18 20:12 by
太感谢你了楼主
# re: Struts2+Spring2+Hibernate3 web应用示例(一) 回复 更多评论
2009-08-08 09:43 by
你实在太有才华了
# re: Struts2+Spring2+Hibernate3 web应用示例(一) 回复 更多评论
2009-08-13 16:25 by
楼主也发一份给我吧,谢谢!我的邮箱是pan.guanhui@163.com
# re: Struts2+Spring2+Hibernate3 web应用示例(一) 回复 更多评论
2009-08-22 15:31 by
终于找到个完整版的,麻烦楼主发给我一份。
1007915459@qq.com
# re: Struts2+Spring2+Hibernate3 web应用示例(一) 回复 更多评论
2009-08-24 14:09 by
谢谢楼主分享,打包的也给我发一份吧,lovesunshine2003@yahoo.cn,再次感谢!
# re: Struts2+Spring2+Hibernate3 web应用示例(一)[未登录] 回复 更多评论
2009-10-15 21:57 by
谢谢楼主了,能发份给我吗?lcily2007@126.com
# re: Struts2+Spring2+Hibernate3 web应用示例(一) 回复 更多评论
2009-10-23 09:52 by
导入出错了,麻烦发一个完整的包到minidxer#gmail.com可以吗?谢谢啦!!!
# re: Struts2+Spring2+Hibernate3 web应用示例(一) 回复 更多评论
2009-11-02 08:36 by
真的很不错,源代码也能运行,非常感谢。。。
# re: Struts2+Spring2+Hibernate3 web应用示例(一) 回复 更多评论
2009-11-05 12:35 by
@zoboya
可以的 他们都是一样的 只是版本的问题
# re: Struts2+Spring2+Hibernate3 web应用示例(一) 回复 更多评论
2009-12-19 17:25 by
henhao
# re: Struts2+Spring2+Hibernate3 web应用示例(一) 回复 更多评论
2010-01-07 15:35 by
急需!!struts2+hibernate+spring整合例子!现在遇到大困难!寻求你帮助!谢谢!请给我发一份!邮箱:935670362@qq.com!谢谢了!
# re: Struts2+Spring2+Hibernate3 web应用示例(一) 回复 更多评论
2010-01-20 15:55 by
终于搞出来了!Thank you!
# re: Struts2+Spring2+Hibernate3 web应用示例(一) 回复 更多评论
2010-01-20 15:57 by
@minidxer
你自己写个啥!根据他的代码敲进去,对自己还好些。
# re: Struts2+Spring2+Hibernate3 web应用示例(一) 回复 更多评论
2010-03-12 14:03 by
给我发一个能运行的程序好吗? 谢谢了
邮箱:tiandh930@163.com
# re: Struts2+Spring2+Hibernate3 web应用示例(一) 回复 更多评论
2010-03-12 17:28 by
可以运行的! 我直接下载的 不用给我发了!谢谢 能告诉我你的QQ号吗?MSN也可以
# re: Struts2+Spring2+Hibernate3 web应用示例(一)[未登录] 回复 更多评论
2010-05-11 14:39 by
楼主,谢谢您,给我发一份吧!
huang_zi_juan@sina.com
# re: Struts2+Spring2+Hibernate3 web应用示例(一)[未登录] 回复 更多评论
2010-07-16 09:00 by
@hsun
我也出现这样的问题了
# re: Struts2+Spring2+Hibernate3 web应用示例(一) 回复 更多评论
2011-09-27 20:47 by
你好啊,可以将整套发给我吗?我按照你 的写法去写,都没有用。是否把它达成包发给我啊?数据库也一起给我!
# re: Struts2+Spring2+Hibernate3 web应用示例(一) 回复 更多评论
2011-12-16 09:41 by
试了一下楼主的程序,发现不能通过的有几个要注意的:
1.spring配置文件:srping-Context/applicationContext.xml。这个要特别注意路径,楼主网页上的代码里路径是:srping-Content,(srping-content/applicationContent.xml )但在web.xml中写的是
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring-context/applicationContext.xml</param-value>
</context-param>
所以启动时找不到是肯定的。
2.log4j.properties文件需要自己添加的。
3.<filter-class>com.sterning.commons.SetCharacterEncodingFilter</filter-class>这个可能会报错,楼主没有贴这个类的代码,所以找不到,自己可以写这个类,也可以去掉web.xml中的过滤器配置。
4.还遇到一个问题:java.lang.IllegalStateException: Web app root system property already
set to different value: 'webapp.root' = [D:\Program Files\tomcat6
\webapps\esis\] instead of [D:\Program Files\tomcat6\webapps\esisOne\]
- Choose unique values for the 'webAppRootKey' context-param in your
web.xml files!
在参照楼主的程序实验时,可能会遇到这个问题,解决方法:在web.xml中加上:<context-param>
<param-name>webAppRootKey</param-name>
<param-value>app1.root</param-value>
</context-param>
以上是我学习时遇到的问题,如有错误的地方,还请指出来!我也是新手,刚刚开始学ssh框架的web开发。
# re: Struts2+Spring2+Hibernate3 web应用示例(一)[未登录] 回复 更多评论
2012-04-09 09:28 by
发分源代码:sinxsoft@gmail.com
谢谢了。