Eclipse下struts+spring+hibernate快速入门1.docx
- 文档编号:11214052
- 上传时间:2023-02-25
- 格式:DOCX
- 页数:19
- 大小:20.12KB
Eclipse下struts+spring+hibernate快速入门1.docx
《Eclipse下struts+spring+hibernate快速入门1.docx》由会员分享,可在线阅读,更多相关《Eclipse下struts+spring+hibernate快速入门1.docx(19页珍藏版)》请在冰豆网上搜索。
Eclipse下struts+spring+hibernate快速入门1
eclipse下struts+spring+hibernate快速入门
courage_yhb 发表于2005-03-29,11:
14
本文是开发基于spring的web应用的入门文章,前端采用StrutsMVC框架,中间层采用spring,后台采用Hibernate。
在写作过程中参考了appfuse和springlive项目
本文包含以下内容:
·配置Hibernate和事务
·装载Spring的applicationContext.xml文件
·建立业务层和DAO之间的依赖关系
·将Spring应用到Struts中
概览
这个例子是建立一个简单的web应用,叫MyUsers,完成用户管理操作,包含简单的数据库增,删,查,该即CRUD(新建,访问,更新,删除)操作。
这是一个三层的web应用,通过Action(Struts)访问业务层,业务层访问DAO。
图一简要说明了该应用的总体结构。
图上的数字说明了流程顺序-从web(UserAction)到中间层(UserManager),再到数据访问层(UserDAO),然后将结果返回。
Spring层的真正强大在于它的声明型事务处理,帮定和对持久层支持(例如Hiberate和iBATIS)
以下下是完成这个例子的步骤:
1.安装Eclipse插件
2.数据库建表
3.配置Hibernate和Spring
4.建立HibernateDAO接口的实现类
5.运行测试类,测试DAO的CRUD操作
6.创建一个处理类,声明事务
7.创建StrutsAction的测试类
8.创建web层的Action和model
9.运行Action的测试类测试CRUD操作
10.创建jsp文件通过浏览器进行CRUD操作
11.通过浏览器校验jsp
安装eclipse插件
1.Hibernate插件
2.Spring插件
3.MyEclipse插件(破解版)
4.Tomcat插件.tanghan
5.其他插件包括xml,jsp,
数据库建表
Createtableapp_user(idnumber(5)notnull,primatekeylastnamevchar2(20),firstnamevchar2(20));
新建项目
新建一个webproject,
新建后的目录结构如上图所示,同时包含了新建文件夹page用于放jsp文件,和源文件夹test用于放junit测试文件。
同时将用到的包,包括struts,hibernate,spring都导入到lib目录下。
创建持久层O/Rmapping
1.在src/com.jandar.model下用hibernate插件从数据库导出app_user的.hbm.xml文件改名为User.hbm.xml
xmlversion="1.0"?
>
DOCTYPEhibernate-mappingPUBLIC
"-//Hibernate/HibernateMappingDTD//EN"
">
column="ID" name="id" type="integer" >
column="LASTNAME" length="10" name="lastname" not-null="false" type="string" /> column="FIRSTNAME" length="10" name="firstname" not-null="true" type="string" /> 2.通过hibernatesynchronizer->synchronizerfile生成User.java文件,User对象对应于数据库中的app_user表 注: 在eclipse下自动生成的对象文件不完全相同,相同的是每个对象文件必须实现Serializable接口,必需又toString和hashCode方法; importjava.io.Serializable; importmons.lang.builder.EqualsBuilder; importmons.lang.builder.HashCodeBuilder; importmons.lang.builder.ToStringBuilder; importmons.lang.builder.ToStringStyle; publicclassBaseObjectimplementsSerializable{ publicStringtoString(){ returnToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE); } publicbooleanequals(Objecto){ returnEqualsBuilder.reflectionEquals(this,o); } publicinthashCode(){ returnHashCodeBuilder.reflectionHashCode(this); } } publicclassUserextendsBaseObject{ privateLongid; privateStringfirstName; privateStringlastName; /** *@returnReturnstheid. */ publicLonggetId(){ returnid; } /** *@paramidTheidtoset. */ publicvoidsetId(Longid){ this.id=id; } /** *@returnReturnsthefirstName. */ publicStringgetFirstName(){ returnfirstName; } /** *@paramfirstNameThefirstNametoset. */ publicvoidsetFirstName(StringfirstName){ this.firstName=firstName; } /** *@returnReturnsthelastName. */ publicStringgetLastName(){ returnlastName; } /** *@paramlastNameThelastNametoset. */ publicvoidsetLastName(StringlastName){ this.lastName=lastName; } } 创建DAO,访问对象 1.在src/com.jandar.service.dao新建IDAO.java接口,所有的DAO都继承该接口 packagecom.jandar.services.dao; publicinterfaceIDAO{ } 2.在src/com.jandar.service.dao下新建IUserDAO.java接口 publicinterfaceIUserDAOextendsDAO{ ListgetUsers(); UsergetUser(Integeruserid); voidsaveUser(Useruser); voidremoveUser(Integerid); } 该接口提供了访问对象的方法, 3.在src/com.jandar.service.dao.hibernate下新建UserDAOHiberante.java importjava.util.List; importmons.logging.Log; importmons.logging.LogFactory; importorg.springframework.orm.hibernate.support.HibernateDaoSupport; importcom.jandar.model.User; importcom.jandar.service.dao.IUserDAO; publicclassUserDaoHibernateextendsHibernateDaoSupportimplementsIUserDAO{ privateLoglog=LogFactory.getLog(UserDaoHibernate.class); /*(非Javadoc) *@seecom.jandar.dao.IUserDAO#getUsers() */ publicListgetUsers(){ returngetHibernateTemplate().find("fromUser"); } /*(非Javadoc) *@seecom.jandar.dao.IUserDAO#getUser(java.lang.Long) */ publicUsergetUser(Integerid){ //TODO自动生成方法存根 return(User)getHibernateTemplate().get(User.class,id); } /*(非Javadoc) *@seecom.jandar.dao.IUserDAO#saveUser(com.jandar.model.User) */ publicvoidsaveUser(Useruser){ log.debug("xxxxxxx"); System.out.println("yyyy"); getHibernateTemplate().saveOrUpdate(user); if(log.isDebugEnabled()) { log.debug("userIdsetto"+user.getId()); } } /*(非Javadoc) *@seecom.jandar.dao.IUserDAO#removeUser(java.lang.Long) */ publicvoidremoveUser(Integerid){ Objectuser=getHibernateTemplate().load(User.class,id); getHibernateTemplate().delete(user); if(log.isDebugEnabled()){ log.debug("deluser"+id); } } } 在这个类中实现了IUserDAO接口的方法,并且继承了HibernateDAOSupport类。 这个类的作用是通过hibernate访问、操作对象,进而实现对数据库的操作。 创建业务层,声明事务 业务层主要处理业务逻辑,提供给web层友好的访问接口和实现访问DAO层。 用业务层的另一个好处是,可以适应数据访问层从Hibernate技术转移到其他数据访问技术。 1.在src/com.jandar.service下新建一个IUserManager接口,该接口有几乎于IUserDAO同样的方法,不同的是处理参数,应为IUserManager是供web层访问的。 publicinterfaceIUserManager{ UsergetUser(Stringuserid); ListgetUsers(); UsersaveUser(Useruser); voidremoveUser(Stringuserid); } 2.在src/com.jandar.service.spring下新建IuserManager实现类,UserManager.java /* *创建日期2005-3-4 * *TODO要更改此生成的文件的模板,请转至 *窗口-首选项-Java-代码样式-代码模板 */ packagecom.jandar.service.spring; importjava.util.List; importmons.logging.Log; importmons.logging.LogFactory; importcom.jandar.model.User; importcom.jandar.service.IUserManager; importcom.jandar.service.dao.IUserDAO; /** *@authorAdministrator * *TODO要更改此生成的类型注释的模板,请转至 *窗口-首选项-Java-代码样式-代码模板 */ publicclassUserManagerimplementsIUserManager{ /*(非Javadoc) *@seecom.jandar.service.IUserManager#getUser(java.lang.String) */ privatestaticLoglog=LogFactory.getLog(UserManager.class); publicIUserDAOuserDao; /** *@return返回userDao。 */ publicIUserDAOgetUserDao(){ returnuserDao; } /** *@paramuserDao要设置的userDao。 */ publicvoidsetUserDao(IUserDAOuserDao){ this.userDao=userDao; } publicUsergetUser(Stringuserid){ Useruser=userDao.getUser(Integer.valueOf(userid)); if(user==null){ log.warn("userid"+userid+"notfoundindatabase"); } if(log.isDebugEnabled()){ log.debug("getauserwithid"+userid); } returnuser; } /*(非Javadoc) *@seecom.jandar.service.IUserManager#getUsers() */ publicListgetUsers(){ //TODO自动生成方法存根 returnuserDao.getUsers(); } /*(非Javadoc) *@seecom.jandar.service.IUserManager#saveUser(com.jandar.model.User) */ publicUsersaveUser(Useruser){ //TODO自动生成方法存根 userDao.saveUser(user); returnuser; } /*(非Javadoc) *@seecom.jandar.service.IUserManager#removeUser(java.lang.String) */ publicvoidremoveUser(Stringuserid){ //TODO自动生成方法存根 userDao.removeUser(Integer.valueOf(userid)); } } UserManager.java通过访问dao接口实现业务逻辑和数据库操作。 同时该类中提供了set方法,运用了Spring的依赖注入机制。 但尚未使用spring的AOP和声明事务。 配置applicationContext.xml 在WEB-INF下新建applicationContext.xml xmlversion="1.0"encoding="UTF-8"? > DOCTYPEbeansPUBLIC"-//SPRING//DTDBEAN//EN" "http: //www.springframework.org/dtd/spring-beans.dtd"> class="org.springframework.jdbc.datasource.DriverManagerDataSource"> hsqldb: db/appfuse
--Makesure
authenticationwillfail-->
--HibernateSessionFactory-->
class="org.springframework.orm.hibernate.LocalSessionFactoryBean"> --TransactionmanagerforasingleHibernateSessionFactory(alternativetoJTA)--> class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> 创建Web层 1.创建StrutsAction,为了在一个action中实现CRUD操作,Action继承了DispatchAction根据参数决定调用方法。 在src/com.jandar.web.struts.action下创建UserAction.java importjavax.servlet.http.HttpServletRequest; importjavax.servlet.http.HttpServletResponse; importmons.logging.Log; importmons.logging.LogFactory; importorg.apache.struts.action.ActionForm; importorg
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Eclipse struts spring hibernate 快速 入门