学习笔记ssh2(struts2 hibernate3.2 spring2.5)整合

学习笔记ssh2(struts2+hibernate3.2+spring2.5)整合

2010-06-26 03:28:42

标签:hibernate struts2 ssh2 spring2.5

学习笔记ssh2(struts2+hibernate3.2+spring2.5)整合

文章分类:Java编程 SSH2 development

1. 项目文件列表



2. Bean 依赖关系:



3. 实现目标

实现对用户的增删查改

4. 开发步骤

建立ssh2 项目->增加hibernate capability,选择annotation和core library,不要选择建立session factory,而是让spring来管理->增加spring capability,选择aop,core,presistence core, persistence jdbc librara->在web-inf目录下的web.xml中加入filter和listener如下:

Xml代码

<filter> <filter-name>struts2</filter-name>

<filter-class>

org.apache.struts2.dispatcher.FilterDispatcher </filter-class>

</filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener>

->在src目录下新建struts.xml文件,dtd文件在struts2的demo中copy一个即可

->ok,准备工作已经完成。

->重启服务器,会发现报错,xxx.asm.xxx的错误,这是由于spring中的asm.jar文件与hibernate中的asm.jar版本冲突,删掉asm.2.x.x.jar即可。

从bean的依赖关系可以看出,action依赖于service的实现,service又依赖于下一

层的userdao。

5. 建立cn.scau.ssh2.beans.User包

包下有User.java是user的属性文件。

还有一个validation.xml待会再说。

6. 建立 cn.scau.ssh2.dao包

包下的UserDao.java是一个接口,规定了增删查改的方法
学习笔记ssh2(struts2 hibernate3.2 spring2.5)整合

Java代码

packagecn.scau.ssh2.dao; importjava.util.List;

importcn.scau.ssh2.beans.User;

publicinterfaceUserDao{

publicvoidsaveUser(Useruser);

publicvoidremoveUser(Useruser);

publicUserfindUserById(intid); publicList<User>findAllUserser(); publicvoidupdateUser(Useruser); } 7.建立cn.scau.ssh2.dao.impl包 包下有UserDaoImpl.java为具体的实现: packagecn.scau.ssh2.dao.impl; importjava.util.List; importorg.springframework.orm.hibernate3.support.HibernateDaoSupport; importcn.scau.ssh2.beans.User; importcn.scau.ssh2.dao.UserDao; //继承HibernateDaoSupport,用到了getHibernateTemplate这个方法。 publicclassUserDaoImplextendsHibernateDaoSupportimplementsUserDao{ @SuppressWarnings("unchecked") publicList<User>findAllUserser(){ Stringhql="fromUseruserorderbyuser.iddesc"; List<User>list=this.getHibernateTemplate().find(hql); returnlist; } publicUserfindUserById(intid){ Useruser=(User)this.getHibernateTemplate().get(User.class,id); returnuser; } publicvoidremoveUser(Useruser){ this.getHibernateTemplate().delete(user); } publicvoidsaveUser(Useruser){ this.getHibernateTemplate().save(user); } publicvoidupdateUser(Useruser){ this.getHibernateTemplate().update(user); } }

8. 建立cn.scau.ssh2.service包

包下的UserService.java其实现与UserDao差不多,因为UserService 依赖于UserDao的实现。

这里就不贴代码,具体看project里的就行

9. 建立cn.scau.ssh2.service.impl包

包下的UserServiceImpl.java的实现就是调用UserDaoImpl中的方法。

详见project。

10. 建立cn.scau.ssh2.action包

包下的各个action实现对页面的控制。

Code:

Java代码

packagecn.scau.ssh2.action; importjava.util.Iterator; importjava.util.Map; importjava.util.Set; importcn.scau.ssh2.beans.User; importcn.scau.ssh2.service.UserService; importcom.opensymphony.xwork2.ActionSupport; publicclassSaveUserActionextendsActionSupport{ privatestaticfinallongserialVersionUID=-4055521880257114396L; privateUseruser; privateUserServiceuserService; //get方法可以不用写,因为要用到的只是set方法 publicUserServicegetUserService(){ returnuserService; } publicvoidsetUserService(UserServiceuserService){ this.userService=userService; } publicvoidsetUser(Useruser){ this.user=user; } publicUsergetUser(){ returnuser; } @Override publicStringexecute()throwsException{ this.userService.save(user); returnSUCCESS; } }

11. 其他action类似实现,主要是在execute()中调用UserService对数据库crud的方法。

此处要注意:可以看到多了一个UpdatePUserAction,这是因为update用户时,先要把用户先preview,然后再update,所以多一个UpdatePUserAction,然后再掉转到update.jsp页面输入需要update的数据。

12. 其实不是写完所有action后才写struts.xml和applicationContext.xml文件,而是每写完一个action,在struts.xml和applicationContext.xml中对action进行配置。

13. struts.xml

code:

Java代码

<?xmlversion="1.0"encoding="UTF-8"?> <!DOCTYPEstrutsPUBLIC "-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constantname="struts.custom.i18n.resources" value="globalMessages"> </constant> <constantname="struts.i18n.encoding"value="utf-8"></constant> <packagename="cn.scau.ssh2.action"extends="struts-default"> <actionname="saveUser"> <resultname="success"type="redirect"> listUser.action </result> <resultname="input">/save.jsp</result> </action> <actionname="listUser"> <resultname="success">/list.jsp</result> <resultname="input">/index.jsp</result> </action> <actionname="deleteUser"> <resultname="success"type="redirect"> listUser.action </result> </action> <actionname="updatePUser"> <resultname="success">/update.jsp</result> </action> <actionname="updateUser"> <resultname="success"type="redirect">listUser.action</result> <resultname="input">/update.jsp</result> </action> </package> </struts> 14.applicationContext.xml <?xmlversion="1.0"encoding="UTF-8"?> <beansxmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <!--destroy-method="close"将连接放回连接池--> <beanid="dataSource"destroy-method="close"> <propertyname="driverClassName" value="com.mysql.jdbc.Driver"> </property> <propertyname="url"value="jdbc:mysql://localhost:3306/ssh2"></property> <propertyname="username"value="root"></property> <propertyname="password"value="rick"></property> <propertyname="maxActive"value="100"></property> <propertyname="maxIdle"value="30"></property> <propertyname="maxWait"value="500"></property> <propertyname="defaultAutoCommit"value="true"></property> </bean> <beanid="sessionFactory"> <propertyname="dataSource"ref="dataSource"></property> <propertyname="hibernateProperties"> <props> <propkey="hibernate.dialect"> org.hibernate.dialect.MySQLDialect </prop> <propkey="show_sql">true</prop> <!--<propkey="hbm2ddl.auto">update</prop>--> </props> </property> <propertyname="mappingResources"> <list> <value>cn/scau/ssh2/beans/User.hbm.xml</value> </list> </property> </bean> <beanid="userDao" scope="singleton"> <propertyname="sessionFactory"> <refbean="sessionFactory"/> </property> </bean> <beanid="userService"> <propertyname="userDao"ref="userDao"></property> </bean> <!--scope="prototype"因为struts2中action是有状态的,所以要将scope设为"prototype",如果不设,可以试一下效果,当输入有误信息时会出现错误提示重复输出的情况--> <beanid="saveUserAction" scope="prototype"> <propertyname="userService"ref="userService"></property> </bean> <beanid="listUserAction" scope="prototype"> <propertyname="userService"ref="userService"></property> </bean> <beanid="removeUserAction"scope="prototype"> <propertyname="userService"ref="userService"></property> </bean> <beanid="updatePUserAction"scope="prototype"> <propertyname="userService"ref="userService"></property> </bean> <beanid="updateUserAction"scope="prototype"> <propertyname="userService"ref="userService"></property> </bean> </beans>

15. 实现对输入信息的校验

在action包下可以看到有*Action-validation.xml文件,实现校验。因为我们在action中定义的是对象类型,所以校验时采用的validator为visitor。使用了visitor则要在相应的bean包中加入user对象的基本属性的校验。

16. 此时完成ssh2整合,可以在此基础上实现对业务逻辑的开发。

END:ssh2 project是参照浪曦风中叶老师的视频画葫芦出来的,可以在vercd中找到相应的链接下载。

  

爱华网本文地址 » http://www.aihuau.com/a/25101011/92687.html

更多阅读

中小学教师职业道德规范学习笔记

中小学教师职业道德规范学习笔记一、依法执教。学习和宣传马列主义、毛泽东思想和邓--同志建设有中国特色社会主义理论,拥护党的基本路线,全面贯彻国家教育方针,自觉遵守《教师法》等法律法规,在教育教学中同党和国家的方针政策保持一

伤寒学习笔记(下

伤寒学习笔记---14,桂枝用量问题?学习仲景药法,涉及用量问题。深入考证,固然不必,简单了解,实属必要。仅以桂枝为例,整理如下:基本资料:《现代中医药应用与研究大系》1985年版,简称《大系》。药法:凡例里说:“将其折合今之用量---,并结合笔者临床

关于闪光灯TTL的学习笔记

关于闪光灯TTL的学习笔记(转)俺注:一直对加闪光灯的拍摄比较疑惑,要知道并不是加开个闪光就一了百了的。特别是现在的专业闪灯,有好几种模式,都需要配合相机的测光使用。今天无意之间看到一篇解疑的文章,赶紧收集下来仔细学习。想学习下闪

§2.5 共点力作用下物体的平衡 物体在平衡力的作用下

§2.5 共点力作用下物体的平衡【考点自清】  一、共点力的平衡  1、共点力  力的作用点在物体上的同一点或力的延长线交于一点的几个力叫做共点力。  能简化成质点的物体受到的力可以视为共点力。  2、平衡状态  物体

声明:《学习笔记ssh2(struts2 hibernate3.2 spring2.5)整合》为网友纯白的梦分享!如侵犯到您的合法权益请联系我们删除