StrutsSpringHibernate基本设置.docx
《StrutsSpringHibernate基本设置.docx》由会员分享,可在线阅读,更多相关《StrutsSpringHibernate基本设置.docx(16页珍藏版)》请在冰豆网上搜索。
![StrutsSpringHibernate基本设置.docx](https://file1.bdocx.com/fileroot1/2023-1/6/9e9899fa-3a1e-4acc-a8fc-fa70e719cde7/9e9899fa-3a1e-4acc-a8fc-fa70e719cde71.gif)
StrutsSpringHibernate基本设置
运用Struts框架实现系统的MVC三层系统的设计实现,主要就是运用了基于jstl标准的struts标签的jsp,统一的ActionServlet,以及复杂的业务逻辑处理和DB处理。
通过Hibernate通过java的reflection技术通过dbXml配置以及增删改查等sql操作的封装接口来实现持久化数据的处理,能大大地简化开发时间。
Spring通过控制反转技术,使系统技术框架实现松耦合,而且框架还实现了在事物处理上的封装等,使开发人员能够编写更干净、更可管理、并且更易于测试的代码。
使用Eclipse以及相关插件,能迅捷的实现基于Struts-Spring-Hibernate框架的系统开发。
1.基本软件:
Struts_lib:
本例使用的是strtus1.2版,包括jar包以及tld文件。
Hibernate:
本例使用的是hibernate3
SpringLib:
本例使用的是1.29版
Eclipse:
本例使用的是3.01版,带LombozWeb开发插件以及HibernateSynchronizer插件
Mysql5.01数据库
Tomcat5.0.28
JDK1.5.0.06
2.本例中数据库实例用的是test数据库,用户名root,密码1234
本例中创建了三张数据表:
分别是
class_info
+---------+-------------+------+-----+---------+----------------+
|Field|Type|Null|Key|Default|Extra|
+---------+-------------+------+-----+---------+----------------+
|id|int(11)|NO|PRI|NULL|auto_increment|
|name|varchar(20)|YES||NULL||
|teacher|varchar(20)|YES||NULL||
+---------+-------------+------+-----+---------+----------------+
students
+-----------+-------------+------+-----+---------+----------------+
|Field|Type|Null|Key|Default|Extra|
+-----------+-------------+------+-----+---------+----------------+
|seq_id|int(11)|NO|PRI|NULL|auto_increment|
|name|varchar(20)|YES||NULL||
|gender|varchar(10)|YES||NULL||
|gradeinfo|varchar(20)|YES||NULL||
+-----------+-------------+------+-----+---------+----------------+
classinfo_students
+-----------+---------+------+-----+---------+-------+
|Field|Type|Null|Key|Default|Extra|
+-----------+---------+------+-----+---------+-------+
|classid|int(11)|NO|PRI|NULL||
|studentid|int(11)|NO|PRI|NULL||
+-----------+---------+------+-----+---------+-------+
该表中给classid建立外键关联到class_info表的id字段
该表中给studentid建立外键关联到students表的seq_id字段
3.安装JDK,在系统环境中设置好JAVA_HOME的路径,以及把%JAVA_HOME%\bin目录设置到path中
在系统环境中设置好CATALINA_HOME以及TOMCAT_HOME,均指到Tomcat5.0.28的目录。
4.在Eclipse中设置JDK,“windowpreferenceJavaComplier”在其中的ComplieCompliancelevel选择5.0
在“windowpreferenceJavaInstalledJREs”中addJDK的名称以及目录[不要选您安装的JRE]
在“windowpreferenceServerInstalledRuntimes”中AddServerRuntimeforTomcat5.0
在“windowpreferenceTomcat”中设置Tomcat的Home等相关Tomcat的配置。
5.新建Web工程:
“FileNewProjecWebJ2EEWebProject”,选择Next进入以下界面
生成新的工程后,OpenJavaPerspective
同时copyspringhibernatestruts_lib下的jar包到web-inf目录的lib中,
再将struts_lib下的tld文件copy到到web-inf目录下
在工程中选择lib下的所有jar,点击鼠标右键,然后按下图操作
这样就设置好了工程的class环境了。
6.Spring+Hibernate的设置使用
选定工程,然后“FileNewOtherHibernateHibernateConfigurationFile”,选择next进入下个页面
输入密码后点击Finish,在工程主目录下会生成一个hibernate.cfg.xml文件:
xmlversion="1.0"encoding="utf-8"?
>
DOCTYPEhibernate-configuration
PUBLIC"-//Hibernate/HibernateConfigurationDTD//EN"
"
--localconnectionproperties-->
jdbc:
mysql:
//localhost:
3306/test
com.mysql.jdbc.Driver
root
1234
--propertyname="hibernate.connection.pool_size">
--dialectforMySQL设置为使用mysql语法-->
org.hibernate.dialect.MySQLDialect
--在运行时是否打印出sql语句-->
false
org.hibernate.transaction.JDBCTransactionFactory
然后再选择“FileNewOtherHibernateHibernateConfigurationFile”,点击next进入下页面,在页面中输入密码,然后再“refresh”一下,显示table的信息,然后选择class_info,再在package中如图设置,具体设置参考下图即可。
在该页面点击properties进入properties页面,在该页面中设置IDGenerator为native,native的意思是按设置使用的数据库来自动处理,如果是mysql,db2,sqlserver等自增的主键自动按“identity”处理,其它还有sequence啊等等,这里用的mysql,所以也可以设置成identity。
另外选上“GenerateSetsto….”和“UseLazyLoading”。
点击finish,会在主目录下生成ClassInfo.hbm.xml文件,将该文件copy到“com.kongfz.test.biz.classmgrbiz.dao”Package下。
然后选定该XML文件,点击右键,选择“HinernateSynchronizerSynchronizeFiles”,这样会在“com.kongfz.test.biz.classmgrbiz.dao”Package下自动生成ClassInfo类以及在该包下生成一个base包,在该包中生成BaseClassInfo类,这两个类是自动生成,其实可以完全合并。
主要的类的定义在BaseClassInfo中,其中的一些基于Hibernate的Annotation全部自动生成好了,基本不用修改
按照以上例子生成Students相关的hbm文件和Bean文件。
然后生成DAO(数据库访问处理)Interface
com.kongfz.test.biz.classmgrbiz.dao.IClassInfoDAO
com.kongfz.test.biz.classmgrbiz.dao.IStudentsDAO
以及上面接口的implementsclass:
com.kongfz.test.biz.classmgrbiz.dao.ClassInfoDAO
com.kongfz.test.biz.classmgrbiz.dao.StudentsDAO
根据示例程序生成相关Dao的代码,代码很简单,除了特殊的需要使用到复杂查询以及联合查询的,需要自己按照HQL语法或者通常SQL语法操作执行外,其他基本一样,非常简单。
另外再生成BizMgr(业务逻辑处理)Interface
com.kongfz.test.biz.classmgrbiz.IClassSelectBizMgr
以及上面接口的implementsclass:
com.kongfz.test.biz.classmgrbiz.ClassSelectBizMgr
业务处理会涉及对多个DAO的处理,在该BizMgr类中设置这些DAO接口成员对象以及对这些成员对象的set方法。
根据示例程序生成相关BizMgr的代码。
代码主要涉及对DAO接口的调用处理,实现代码也非常的简洁简单,由于要使用spring框架来处理,所以这里也根本不必太考虑事务,只是要求把要求同一事物处理的操作放在BizMgr的同一个方法中即可。
生成以上数据Bean/Dao/BizMgr的类以后,可以使用spring来配置,例如“com.kongfz.test.biz.classmgrbiz”下的spring.xml文件
xmlversion="1.0"encoding="UTF-8"?
>
DOCTYPEbeansPUBLIC"-//SPRING//DTDBEAN2.0//EN""http:
//www.springframework.org/dtd/spring-beans-2.0.dtd">
class="mons.dbcp.BasicDataSource">
com.mysql.jdbc.Driver
jdbc:
mysql:
//localhost:
3306/test
root
1234
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
org.hibernate.dialect.MySQLDialect
true
com/kongfz/test/biz/classmgrbiz/dao/ClassInfo.hbm.xml
com/kongfz/test/biz/classmgrbiz/dao/Students.hbm.xml
class="org.springframework.orm.hibernate3.HibernateTemplate">
class="com.kongfz.test.biz.classmgrbiz.dao.ClassInfoDAO">
class="com.kongfz.test.biz.classmgrbiz.dao.StudentsDAO">
class="com.kongfz.test.biz.classmgrbiz.ClassSelectBizMgr">
*BizMgr
interceptor
然后再写一个测试的class,例如示例程序中的com.kongfz.test.biz.classmgrbiz.Mytes
在Main方法中可以测试任何一个BizMgr的接口。
7.Struts的使用
首先设置生成的web工程下的web.xml文件,例如:
xmlversion="1.0"encoding="UTF-8"?
>
xsi="http:
//www.w3.org/2001/XMLSchema-instance"xsi:
schemaLocation="
myTestWeb01
com.kongfz.test.util.ApplicationListener
action
org.apache.struts.action.ActionServlet
config
/WEB-INF/struts-config.xml
debug
2
2
action
*.do
logon.jsp
/WEB-INF/struts-bean.tld
/WEB-INF/struts-bean.tld
/WEB-INF/struts-html.tld
/WEB-INF/struts-html.tld
/WEB-INF/struts-logic.tld
/WEB-INF/struts-logic.tld
然后再生成com.kongfz.test.action.LogonFormextendsActionForm以及
com.kongfz.test.action.ClassFormextendsActionForm,其中的类属性成员名全部是原型页面中Form表单的输入项(input,select)标签的name属性名字,这命名必须一致,然后每个属性必须按照通用规则生成相应的set/get方法。
再生成com.kongfz.test.action.LogonActionextendsDispatchAction以及
com.kongfz.test.action.ClassManagerActionextendsDispatchAction,其中ClassManagerAction中因为涉及处理业务逻辑,所以需要定义一个IclassSelectBizMgr接口对象,以及该对象的