您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > struts2+hibernate3.2+spring2.0配置+入门实例
1、整体架构介绍在软件工程领域,为了降低模块耦合度,提高模块的可重用性,分层一直是广为采纳的一个方法。其实分层还可以使开发人员专注于某一层进行开发,使得软件开发的分工变细,提高生产效率。一个企业级的java应用,通常分为以下几层:UI层,业务逻辑层,数据持久层,域对象层。下面对这几层分别作简要介绍:域对象层:具体的实体类,如老师,学生等等这些具体的类(注意:需要与数据库中的某一表对应),由持久层类完成。数据持久层:主要负责与底层的数据库打交道。这里采用Spring封装的Hibernate操作来简化实际的编码。主要的操作为CRUD(create,read,update,delete),由DAO完成。业务逻辑层:主要负责具体的业务处理。通过Spring的IOC以及AOP实现各个功能的耦合相连,业务逻辑由service来完成,service通过调用DAO操作数据库,实现业务逻辑。service由Struts的Action类来调用。UI层:负责与用户交互,包括:接受用户的请求,把处理结果返回给用户。目前主要采用struts来做UI层,虽然比起Tapestry以及JSF这些事件驱动的表现层技术而言,Struts的设计显得有些老土,但它目前仍是表现层事实上的标准,所以我们还是选用它。内容通过hibernate建立与表users相对应的类Users。在Struts框架创建的index.jsp的表单中用户名和密码,action通过类的方法判别输入信息是否与数据库中一条记录的信息一致。如果一致,转到next.jsp页面,显示所有的用户信息。如果与每条记录都不一致,则要求重新输入。步骤1、预备工作:用sqlserver2000创建一个test数据库,再创建一个users表,包含两个字段username和password。脚本如下CREATEDATABASEtest;USEtest;CREATETABLEusers(idint(11)NOTNULLidntity(1,1),usernamevarchar(20)NOTNULLdefault'''',passwordvarchar(20)default'''',PRIMARYKEY(id))打开myeclipse的databaseexplore透视图图5-1打开数据库浏览器透视图右键单击左侧的空白区域,点击new按钮图5-2打开数据库连接(一)图5-3打开数据库连接(二)测试数据库配置是否成功。2、新建一个myeclipse的web工程,命名为aaa图5-4创建web工程3、引入Spring包右键工程名图5-5准备增加Spring包图5-6选定要增加的Spring包注意:这里为了省得以后再添加spring的相关包,所以一次性的选中了所有的包。选中Copy选项,它会把这些包拷贝到/WebRoot/WEB-INF/lib目录下,方便以后的实际部署。然后点击“Next”。图5-7选择Spring配置文件(applicationContext.xml)路径4、添加hibernate包图5-8添加hibernate包系统会检测到该工程已经添加了Spring包,选择使用Spring的配置文件(ApplicationContext.xml)图5-9选择hibernate配置文件(一)图5-10选择hibernate配置文件和SessionFactoryID图5-11设定BeanId并选择DBProfile图5-12不要创建SessionFactoryclass最后点击Finish按钮,在最后即可。5、修改库文件和以往不同,Spring2.0并不是把所有的包加到lib目录下就能运行工程的,而且把所有的包加到lib目录下会产生冲突。由于MyEclipse5.5对Spring2.0支持还不太成熟,它在加入Spring组件时会把不需要的包加进去。因此需要手动对lib目录下的包进行增、删、改。(1)删除文件进入工程的Webroot/WEB-INF/lib目录,以“详细信息”方式排序所有文件,找到以下的六个文件并删除:asm-2.2.2.jar、asm.jar、asm-commons-2.2.2.jar、asm-util-2.2.2.jar、asm-attr.jar、cglib-2.1.3.jar。13-1删除不需要的文件(2)增加文件到MyEclipse的安装目录下,进入eclipse/plugins文件夹,使用搜索功能找出commons-pool.jar文件,可能会有多个结果,只需要其中一个即可,把它放到lib目录下。6、添加Struts2.0包从的包,一般情况下是struts-版本号-all.zip,打开里面的lib文件夹,把下图所示的包添加到工程的lib目录下。图5-14添加struts2.0包完成后刷新工程。7、搭建工程框架,写log4j.properties文件在工程的src目录下新建几个包,方法为右键在src文件夹上点击,然后如图所示:图5-15新建一个包图5-16建好的包结构其中:Com.action包存放各个action文件。Com.service包存放service接口Com.service.impl包实现service接口。Com.filter包存放过滤器文件,写这些文件为了解决中文问题。Com.hibernate包存放hibernate映射文件和持久类。Com.util包存入公共文件,如BaseService.java、BaseObject.java、BaseAction.java,如果不同的service调用同样的方法,可以把这些方法写在BaseService.java中,下面将详细说明。先创建BaseObject类BaseObject.java:右键点击com.util包,选择new-Class,如图所示:图5-17新建一个类图5-18packagecom.util;importjava.io.Serializable;importjava.text.SimpleDateFormat;importjava.util.Date;importorg.apache.commons.lang.builder.EqualsBuilder;importorg.apache.commons.lang.builder.HashCodeBuilder;importorg.apache.commons.lang.builder.ToStringBuilder;importorg.apache.commons.lang.builder.ToStringStyle;publicclassBaseObjectimplementsSerializable{publicStringtoString(){returnToStringBuilder.reflectionToString(this,ToStringStyle.MULTI_LINE_STYLE);}publicbooleanequals(Objecto){returnEqualsBuilder.reflectionEquals(this,o);}publicinthashCode(Objecto){returnHashCodeBuilder.reflectionHashCode(this);}protectedStringshowDatetime(Datepidate){returngetFormateDate(pidate,yyyy-MM-ddHH:mm);}protectedStringshowDate(Datepidate){returngetFormateDate(pidate,yyyy-MM-dd);}protectedStringshowTime(Datepidate){returngetFormateDate(pidate,HH:mm);}privateStringgetFormateDate(Datepidate,Stringformate){if(pidate==null){returnnull;}else{return(newSimpleDateFormat(formate)).format(pidate);}}}再创建BaseService.java图5-18指定类名在弹出来的对话框中指定类名为BaseService,点击选择其父类的“Browse”按钮。然后在弹出来的对话框中选择超类名为HibernateDaoSupport,如图所示:图5-19选择父类双击被选的父类(不用点“OK”按钮),然后点“Finish”完成BaseService.java的创建。Eclipse会自动跳到该文件下。暂时往BaseService.java中添加如下代码:packagecom.util;importjava.io.Serializable;importjava.util.List;importorg.springframework.dao.DataAccessException;importorg.springframework.orm.hibernate3.support.HibernateDaoSupport;publicclassBaseServiceextendsHibernateDaoSupport{publicSerializableinsert(BaseObjectobj)throwsDataAccessException{returngetHibernateTemplate().save(obj);}publicvoidupdate(BaseObjectobj)throwsDataAccessException{getHibernateTemplate().update(obj);}publicvoiddelete(BaseObjectobj)throwsDataAccessException{getHibernateTemplate().delete(obj);}publicObjectload(Classcls,Serializableid)throwsDataAccessException{returngetHibernateTemplate().load(cls,id);}publicListgetAll(Stringhql,Objectobjs[])throwsDataAccessException{if(objs==null)returngetHibernateTemplate().find(hql);elsereturngetHibernateTemplate().find(hql,objs);}publicObjectgetFirstObject(Stringhql,Objectobjs[])throwsDataAccessException{Objectret=null;Listtmp=getAll(hql,objs);if(tmp!=null&&tmp.size()0)ret=tmp.get(0);returnret;}}说明:在BaseService.java中定义了几个方法,包括插入、修改、删除、查询,需要的话直接调用即可。用类似的方法新建BaseAction.java文件,选择其父类为ActionSupport,注意是com.opensymphony.xwork2.ActionSupport,另外两个是Struts1的。接着,写log4j.properties文件,该文件的主要作用是对后台每一步操作在控制台中显示对应的日志信息,方便对程序的调试。右键在src目录上点击,选择new-File,弹出如下图所示对话框,指定文件名为log4j.properties。然后点“Finish”。图5-20建立log4j.properties文件往里面添加如下代码:log4j.rootLogger=INFO,CONSOLElog4j.appender.CONS
本文标题:struts2+hibernate3.2+spring2.0配置+入门实例
链接地址:https://www.777doc.com/doc-5946077 .html