这几天把hibernate和spring好好看了下,再想想struts的一些东西,决定把3个整合一下一起用,表现层用 struts+freemarker,业务层用spring,hibernate处理持久层。在struts中,利用委托,将action的处理委托给 spring进行,struts只负责页面逻辑。
前些日子下了Eclipse 3.2+MyEclipse5.0M2,感觉MyEclipse一些东西还是不错的,就用它来做个整合。
首先,建立一个web project:
然后,给新建立的项目附加上struts的一些文件:
完成后项目结构如下:
接着加入hibernate需要的文件:
完成后项目结构为:
再加入spring的文件:
注意下面的选择:
完成后可以看到:
打开那个applicationContext.xml,将
改为:
现在还需要做一些修改,才能在运行的时候不报错,我以前也写过struts+hibernate的时候,会抛一个错,之所以是由于hibernate包含的那个xerces.jar,所以现在直接把它给删掉,没什么问题。
在spring和hibernate那,有2个log4j.jar,老版本不好用,所以删除,换一个新版本。
删除
和
,换上
,然后,在src下加入一个log4j.properties:
内容如下:
这样log4j就配好了。
接下来是加入FreeMarker,jsp比不上,个人感觉。
先下一个freemarker.jar
,加到WEB-INF下的lib目录,然后,打开web.xml,加入如下内容:
下面来点实战演习。
切换到MyEclipse的hibernate视图。
打开数据库连接:
然后,执行
自动生成几个文件:
并且,spring的applicationContext.xml自动加入
然后,建立ftl页面,根据前面web.xml配置的freemarker设置,需要建立如下目录
先把页面逻辑处理下,打开struts-config.xml,然后进行如下操作
继续加
完成后效果如下:
下面是3个页面:
这里注意下前2行,在freemarker中用struts标签。
前面说过action委托给spring做,许要在struts那加入
然后,action类需要修改下
下面的setter是为spring准备的。
struts配置那的action声明需要修改一下,说明用代理:
然后在spring的applicationContext.xml加上:
注意是用name,不是id。
发布,运行,结果抛了个错
还好,问题不大,找到
加到WEB-INF/lib下就可以了。
开始测试
成功的话:
否则:
然后去数据库一看,郁闷,数据没进来,试了N久,最后发现spring里要定义个dataSource。原来sessionFactory的定义变为如下:
ok,一切正常。到这里,就写完了,只是为说明怎样用MyEclipse进行快速开发,毕竟平时做项目要的是进度,还要监管质量,有了MyEclipse,确实方便不少。
前些日子下了Eclipse 3.2+MyEclipse5.0M2,感觉MyEclipse一些东西还是不错的,就用它来做个整合。
首先,建立一个web project:
![](https://i-blog.csdnimg.cn/blog_migrate/014f83b81d1c7f32ebffb3d785855e5a.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/6e68083c68bbbc201934cd30a29891b0.jpeg)
然后,给新建立的项目附加上struts的一些文件:
![](https://i-blog.csdnimg.cn/blog_migrate/1abdb46b200874e8925b97320bebfa6e.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/35b269f9aad5a91ee36361226a67da39.jpeg)
完成后项目结构如下:
![](https://i-blog.csdnimg.cn/blog_migrate/e67f4f58498fe5f74a8288bb00d36ab9.jpeg)
接着加入hibernate需要的文件:
![](https://i-blog.csdnimg.cn/blog_migrate/f446c010e63be7dc188079bbc2c7c1ac.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/fac907411681fd12fd776465bd422068.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/d26cb6ab741d90d4b89f0ed4dd9963ed.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/fa73cdb863679d9845fa0ab0d53f1612.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/97f58650ad14df26f2d179a9260d0304.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/0ec6f69f320d0e12969aea1fc2e952b4.jpeg)
完成后项目结构为:
![](https://i-blog.csdnimg.cn/blog_migrate/5d54e4b38f9abf09bd4611c52a1c79a8.jpeg)
再加入spring的文件:
![](https://i-blog.csdnimg.cn/blog_migrate/e38b0ce8b4ed69c1143ad1ec6a397660.jpeg)
注意下面的选择:
![](https://i-blog.csdnimg.cn/blog_migrate/641172f94c7ee8c4f43b3c437571fc27.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/73e2b97f838b032dac5dbfabcbb065cf.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/9d5f4159f630a2bfa6845b691c6fa764.jpeg)
完成后可以看到:
![](https://i-blog.csdnimg.cn/blog_migrate/5bc42e82f60500367ef6da8e37e2073c.jpeg)
打开那个applicationContext.xml,将
![](https://i-blog.csdnimg.cn/blog_migrate/04d3b9dd8e1309f0eadb147a77c910ca.jpeg)
改为:
![](https://i-blog.csdnimg.cn/blog_migrate/84bdd1a156d3967fcc10fc3112d4a258.jpeg)
现在还需要做一些修改,才能在运行的时候不报错,我以前也写过struts+hibernate的时候,会抛一个错,之所以是由于hibernate包含的那个xerces.jar,所以现在直接把它给删掉,没什么问题。
![](https://i-blog.csdnimg.cn/blog_migrate/e6de60c2c431463dbb9657a10a15916f.jpeg)
在spring和hibernate那,有2个log4j.jar,老版本不好用,所以删除,换一个新版本。
删除
![](https://i-blog.csdnimg.cn/blog_migrate/857cf56ca3cfccd259e748a81be12a2e.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/529c4d3c8435e3db9b36ed464f7880ba.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/ddebb414cf9abf3c65840e535e7a1a79.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/3f4d2713040307e9cb8404aaa526653f.jpeg)
内容如下:
![](https://i-blog.csdnimg.cn/blog_migrate/a047f8551f96028b619998c7c8e9948a.jpeg)
这样log4j就配好了。
接下来是加入FreeMarker,jsp比不上,个人感觉。
先下一个freemarker.jar
![](https://i-blog.csdnimg.cn/blog_migrate/24dc2805193f28d0d7a2f79e44a7b32d.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/d5c702d7fd31f7391ea52eb562e455c6.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/1a14eb22464a2d6eb92334e643bbf251.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/02d58e0f60aaedcbf5c6c03a59ce89a9.jpeg)
下面来点实战演习。
切换到MyEclipse的hibernate视图。
![](https://i-blog.csdnimg.cn/blog_migrate/97dc543810b24106aff4793fcd1d1fe8.jpeg)
打开数据库连接:
![](https://i-blog.csdnimg.cn/blog_migrate/9c21eb22917d4d1c14bb3ba7349634fa.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/2b9ff38dee3062da15f7efba77cf7dde.jpeg)
然后,执行
![](https://i-blog.csdnimg.cn/blog_migrate/61f3859a127e0d30d46ae66b286502e7.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/799dd0b44bd7d83d6c1dd83b4871c0b9.jpeg)
自动生成几个文件:
![](https://i-blog.csdnimg.cn/blog_migrate/bee98e281fdd2989491fefac67ce208b.jpeg)
并且,spring的applicationContext.xml自动加入
![](https://i-blog.csdnimg.cn/blog_migrate/d54a0a39b70b2520001acb86c985b580.jpeg)
然后,建立ftl页面,根据前面web.xml配置的freemarker设置,需要建立如下目录
![](https://i-blog.csdnimg.cn/blog_migrate/60ef5f710bb0a9f90249ce3ae61b5e14.jpeg)
先把页面逻辑处理下,打开struts-config.xml,然后进行如下操作
![](https://i-blog.csdnimg.cn/blog_migrate/fcc4b7adc3584a2eb5880dc08de3f076.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/7dc174cf1364bd0620fba9e7f8119d24.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/3c468d2fcc6010e256ef0dc2308d959c.jpeg)
继续加
![](https://i-blog.csdnimg.cn/blog_migrate/ea718309aa1a1b07ccac59cc9b50dddd.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/79e052454dfd02c2f8474cf550e1cf28.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/a332c44866088c9e6f7bd9e8a7236f98.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/3b83022685f2304a52036b6ec0f89e46.jpeg)
完成后效果如下:
![](https://i-blog.csdnimg.cn/blog_migrate/3fe8c38fb83722bef0a45d28ea62032d.jpeg)
下面是3个页面:
![](https://i-blog.csdnimg.cn/blog_migrate/89f0acb0b363fb16edb6a53a803d544e.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/196191357294ea367e840fcd66e0440e.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/c34ff831da3854af52493ade8fd84f07.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/f28af0825b38390509e6772fdc2af05f.jpeg)
这里注意下前2行,在freemarker中用struts标签。
前面说过action委托给spring做,许要在struts那加入
![](https://i-blog.csdnimg.cn/blog_migrate/b6383e170d076d784100744eb2a95a07.jpeg)
然后,action类需要修改下
![](https://i-blog.csdnimg.cn/blog_migrate/ff3bb20d93986b9c8c147b7f9267700d.jpeg)
下面的setter是为spring准备的。
struts配置那的action声明需要修改一下,说明用代理:
![](https://i-blog.csdnimg.cn/blog_migrate/8d9a53f5598392c761656eb4a76a6468.jpeg)
然后在spring的applicationContext.xml加上:
![](https://i-blog.csdnimg.cn/blog_migrate/86d96baae9c1c644c819b38742ac7f65.jpeg)
注意是用name,不是id。
发布,运行,结果抛了个错
![](https://i-blog.csdnimg.cn/blog_migrate/7e43a731b2818d759fc8c3047281a8dd.jpeg)
还好,问题不大,找到
![](https://i-blog.csdnimg.cn/blog_migrate/ca546d0a10e6ebfbbfdf3ce4b00cdbbf.jpeg)
开始测试
![](https://i-blog.csdnimg.cn/blog_migrate/3c3dc62c7edfefac38681de1f7ebb0c2.jpeg)
成功的话:
![](https://i-blog.csdnimg.cn/blog_migrate/4143150c2dbe77d8bd6dbe60fc61aac2.jpeg)
否则:
![](https://i-blog.csdnimg.cn/blog_migrate/7181dfe0bb028fe86fbcdbc89416d569.jpeg)
然后去数据库一看,郁闷,数据没进来,试了N久,最后发现spring里要定义个dataSource。原来sessionFactory的定义变为如下:
![](https://i-blog.csdnimg.cn/blog_migrate/c3b1f5b1d1966044357dd0b1d546d54b.jpeg)
ok,一切正常。到这里,就写完了,只是为说明怎样用MyEclipse进行快速开发,毕竟平时做项目要的是进度,还要监管质量,有了MyEclipse,确实方便不少。