随笔-67  评论-522  文章-0  trackbacks-0
    JavaEE企业级开发中,以SSH2框架为核心的应用非常广,大象根据项目实践经验,通过一个实例,详细的为大家讲解如何实现全注解式的开发。
    开发环境
    JDK1.6.0_18
    Eclipse3.2.1
    MyEclipse5.1.0
    Tomcat6.0.10
    MySQL5.0.27
    Navicat Lite for MySQL 8.1.20
    每个人的开发环境可能会有差异,但有一点我需要说明的是,JDK的版本不得低于1.5,因为用到了很多1.5版才支持的新特性。TomcatMySQL不要低于我所用的版本,因为我没在其它的版本上进行测试。Navicat则是MySQL数据库的图形化操作工具。我在这里假定各位目前已经设置好了开发环境,下面就开始详细的说明。
    由于要阐述的内容比较多,大象决定将它们划分成个几章节来讲,这一章就主要来说说jar包的选择。
    第一部分选择必须的jar
    新建一个web项目,然后将必要的jarCOPYlib里面。根据本文实例demo,大象给出下图中的最少jar包配置。

        
    我对这些jar包进行一下说明,方便大家理解。
    
    解压Struts2.1.6lib文件夹,从中选出上面7jar包添加到我们的工程库中。commons-loggingfreemarkerognlstruts2-corexwork5个还是struts2的核心包。但在Struts2.1.6这个版本中,还需要加上commons-fileupload包。如果没有,则启动就会报错,不过不需要像网上传言的那样还得加上commons-iojar包,这些大象都亲自做过测试。在本实例中,我将对struts2也采取注解的方式,所以用到了struts2-convention-plugin-2.1.6.jar这个插件。因为要与spring整合,所以struts2-spring-plugin-2.1.6.jar也必不可少。
    
    大象在这里偷个懒,直接将spring的完整jar包加了进来,如果各位想精简类库的话,就选取它的分类jar包吧。比如本例使用struts2作为MVC框架,所以springwebmvc就不可能用到了。有想改的朋友请自己动手改下。另外有点我想说下,如果采取完整springjar包,还需要Spring2.5.6\lib\concurrent文件夹中的backport-util-concurrent.jar,如果不加这个,spring会报错。但是采取spring分类jar包的形式,这个可以不用加,至于具体使用什么需要依赖这个包,大象还没去测试过,这个有待验证。还有lib\slf4j下的日志包,目前很多都开始采用基于slf4j接口的日志器,它的好处就是日志器是根据slf4j的接口来进行实现,可以在不改变代码的情况下更换日志器。最后Spring的源代码中使用的是commons-logging记录日志,因此这个包不能少,不过因为struts2也用到了,所以这里就省了。
    
    Hibernate3.3版开始,对jar包结构做了一次大的调整,我们只需要加入lib\required文件夹下面的6jar包。请注意这6jar包都是使用Hibernate所必须的。另外再加上hibernate核心包。这里我将slf4j-api-1.5.2.jar换成了1.5.0,这是因为slf4j是一个通用日志接口,不提供任何实现,我在demo里面使用的是log4j,而hibernate包里面没有log4jslf4j实现。而且如果版本不一致,会有异常,因此我就采用Spring2.5.6\lib\slf4j里面提供的配套版本。另外我将commons-collections-3.1.jar换成了Struts2.1.6里面的3.2版。
    
    例子中使用Hibernate JPA来完成实体对象映射,所以上面这些包都必不可少。使用注解的方式,可以不用写繁琐的配置文件,降低了出错机率。而且现在很多人都喜欢这种方式。大家可以去sourceforge下载。

    下载地址http://sourceforge.net/projects/hibernate/files/

    
    本例使用DBCP连接池来管理数据源。
    
    MySQL数据库的连接驱动。
    
    这个包的作用是创建动态代理对象。比如在使用AOP方式管理spring事务时,如果我们的目标对象没有实现接口,而又要使用AOP来处理事务,这时就需要用到这个jar包。可以在Spring2.5.6\lib\cglib里面找到。
    
    JSTL标签库,很经典的东东,如果需要可以将它们加入lib中。
    大象在这里建议大家做开发的时候,不要过多的依赖MyEclipse提供的那些功能,多用手动的方式来做。那样方便是方便了,但不利于学习。比如加入上面这些开发所用的类库,这样可以更清楚的了解每个jar包的作用,增加知识的积累,方便以后调试。Ok,关于这部分的内容到这里就说完了,那么,我们下次继续。
    
本文为菠萝大象原创,如要转载请注明出处。http://www.blogjava.net/bolo
posted on 2010-04-11 22:24 菠萝大象 阅读(22472) 评论(35)  编辑  收藏 所属分类: Struts2

评论:
# re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(一) 2010-04-11 22:46 | E2
从来就不用MyEclipse  回复  更多评论
  
# re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(一) 2010-04-11 23:22 | 菠萝大象
例子我做好了,写得比较简单,主要是方便大家理解与学习,关键问题是用文字把它表述出来需要点时间。看过我博客的朋友应该知道,大象是个很负责的人,我一直都是很用心在写博客。我从来没有从网上随便抄一些文字和代码来敷衍了事。所有的字句都倾注了我的理解与总结。所有的例子都亲自做过测试过。所以请大家耐心等下,后面的章节很快就会出来。  回复  更多评论
  
# re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(一)[未登录] 2010-04-12 08:33 | 小人物
顶一个!!!  回复  更多评论
  
# re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(一) 2010-04-13 12:58 | gouf
值得看下看, 特别是spring的 ^^  回复  更多评论
  
# re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(一)[未登录] 2010-04-15 16:18 | 追求
好文章 ,简述了一个项目的主要框架思想及代码实现 再赞一个,辛苦这么晚还在为IT业做贡献,之前一直也想写这类文章,怎耐本人太懒   回复  更多评论
  
# re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(一) 2010-04-15 19:45 | 菠萝大象
@追求
呵呵,谢谢支持  回复  更多评论
  
# re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(一) 2010-04-19 23:28 | 三国阿海
我总算注册成功了,忙了我大半个小时。我还以为是我一定要注册那个什么的邮箱。

后来才在Yahoo收到,BlogJava给我发的信息。  回复  更多评论
  
# re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(一) 2010-04-20 10:30 | keer
netbeans...  回复  更多评论
  
# re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(一) 2010-04-22 08:34 | 税国政
楼主能否给出代码下载呢?  回复  更多评论
  
# re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(一)[未登录] 2010-04-23 14:13 | javaStudy
不错。对jar包的选择讲解的很好。网上其他的一些文章中都是说,把什么框架的lib下的jar全拷到工程里,说是为了,省事,不易出错。  回复  更多评论
  
# re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(一) 2010-04-23 15:57 | 菠萝大象
@javaStudy
谢谢支持,你说的很对,那样做一点用处都没有,写的人不清楚,看得人更不清楚。大象就是想让大家看点有用的东西,仅此而已。  回复  更多评论
  
# re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(一) 2010-04-26 10:51 | software-Andy
楼主严谨的态度让人敬佩啊
好文章,值得借鉴  回复  更多评论
  
# re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(一) 2010-04-26 12:44 | 菠萝大象
@software-Andy
谢谢支持。  回复  更多评论
  
# re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(一)[未登录] 2010-10-09 18:51 | nassir
请问下菠萝大象,在你这个ssh2项目中sessionFactory是如何注入到HibernateDaoSupport中去了,我通过注释搭建项目,加载XML文件时,怎么老报 Caused by: java.lang.IllegalArgumentException: 'sessionFactory' or 'hibernateTemplate' is required
提示我sessionFactory没有注入

希望有时间帮忙给个解释,谢谢

我的邮箱:nassir@126.com
  回复  更多评论
  
# re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(一) 2010-10-11 14:32 | 菠萝大象
@nassir
这位童鞋你好,首先谢谢你关注我的博客。我想问下,你将我的这五篇文章都仔细的看完了吗?恩,是仔细的,如果还不是很清楚的话,再多看几遍,另外把我提供的源码下下来也看看。确认自己都搞清楚没问题了,再动手做吧。我碰到有很多朋友都是还没仔细的看,就急着开始动手做了,后来他们按我的建议,都自己解决了,希望你也能自己解决,如果还有什么不清楚的,请在回复中写出来,我会看到的。  回复  更多评论
  
# re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(一) 2011-02-17 13:17 | sdfsdf
关注SSH中,谢谢啦  回复  更多评论
  
# re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(一) 2011-03-17 18:40 | taote
今天报了一个错误,java.lang.ClassCastException: org.hibernate.annotations.common.reflection.ja。。。。。。
查了好多遍原来是hibernate的annotation的jar包冲突了。我用的是hibernate3.6,所以hibernate-annotations.jar和hibernate-commons-annotations.jar这两个jar就不要加了,hibernate3.5以后已经集成了annotation了。  回复  更多评论
  
# re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(一) 2011-03-17 22:55 | 菠萝大象
@taote
我没用3.6的进行测试,谢谢你的提醒,大象非常感谢  回复  更多评论
  
# re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(一)[未登录] 2011-04-28 17:59 | AAA
好好好 赞赞赞  回复  更多评论
  
# re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(一) 2011-05-03 23:59 | huanghao
楼主,谢谢分享  回复  更多评论
  
# re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(一) 2011-05-14 11:29 | 文学社
看来还要加强学习。  回复  更多评论
  
# re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(一) 2011-05-16 16:40 | 李亮
为什么源码里面的注解都是乱码  回复  更多评论
  
# re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(一) 2011-05-16 18:02 | 菠萝大象
@李亮
你工作空间设置的是什么编码?我用的是UTF-8编码  回复  更多评论
  
# re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(一) 2011-06-04 09:49 | wings
谢谢  回复  更多评论
  
# re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(一) 2011-06-13 17:05 | 李晓阳
请问下菠萝大象,你在这个框架的用到的jar包能不能给我发一份,邮箱地址是xupengfei666@163.com,万分感谢啊。  回复  更多评论
  
# re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(一) 2011-06-13 17:09 | 菠萝大象
@李晓阳
还在使用老方法做啊?改成maven吧,没看到传统做法我已经没写了吗?你想要我还是可以发给你的,你不觉得传统方式很麻烦么,效率也不高  回复  更多评论
  
# re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(一)[未登录] 2011-08-01 13:12 | 海风
多谢分享,对我很有用,学习了!  回复  更多评论
  
# re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(一) 2012-10-09 09:59 | 伍叶春
缺少包:
commons-lang-2.5.jar

否则StringUtils.isNotBlank(name)报错.
  回复  更多评论
  
# re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(一) 2012-10-09 10:04 | 菠萝大象
@伍叶春
我这里所说的,是必须有的jar包,commons-lang是可选的,第五篇最下面,有本例所用到的jar包。你可以去看看  回复  更多评论
  
# re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(一) 2013-09-10 16:42 | 李登峰
大象你好,三大框架service层,dao层都有接口吗?你这这么没有,那个接口主要有什么意义  回复  更多评论
  
# re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(一) 2013-09-27 10:01 | 菠萝大象
@李登峰
其实对于业务来说,要不要接口已经没有区别了,相反搞接口还显得麻烦,接口的定义是一种抽象,对于业务来说你根本就抽象不出来,你不知道什么时候需求就变了。  回复  更多评论
  
# re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(一) 2013-10-08 14:34 | 求指导
大象,您好,谢谢您详细的说明,能把jar包发一份到我的邮箱吗?baoxilin@126.com  回复  更多评论
  
# re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(一) 2013-11-23 16:14 | asdasd
没接口 怎么用aop创建动态代理对象@菠萝大象
  回复  更多评论
  
# re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(一)[未登录] 2014-07-21 13:09 | lxl
讲的太好了,真心感谢你的讲解,思路清晰,受益匪浅~谢谢~  回复  更多评论
  
# re: Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(一) 2015-01-17 10:01 | ld
可以发一份Struts2.1.6+Spring2.5.6+Hibernate3.3.1源码我学下吗zhengshuihong1990@163.com,最近在搭建SSH项目,我在想opesseion怎么关闭,又说在filter可以关,又说,手动关,是不是不用关啊我用的是hibernate3.6的  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: