实验五 Struts2和Hibernate整合基础.docx
- 文档编号:27349917
- 上传时间:2023-06-29
- 格式:DOCX
- 页数:16
- 大小:408.06KB
实验五 Struts2和Hibernate整合基础.docx
《实验五 Struts2和Hibernate整合基础.docx》由会员分享,可在线阅读,更多相关《实验五 Struts2和Hibernate整合基础.docx(16页珍藏版)》请在冰豆网上搜索。
实验五Struts2和Hibernate整合基础
实验五Struts2和Hibernate3整合应用
(注意本实验的字符集全部为UTF-8)
一、目的和要求
本实验是为了让学生对持久化技术有一个初步了解,并掌握在Eclipse+Hibernate的集成环境下,如何建立一个持久化技术的简单的应用。
通过本实验
1.掌握在企业Java应用开发中Struts的作用;
2.熟悉在Eclipse+MyEclipse环境中综合使用Hibernate和Struts的方法和步骤;
3.掌握Hibernate的核心思想。
4.掌握Struts和Hibernate整合思想。
二、实验内容
创建数据库test,在数据库中创建一张表users,包括id,username和password,通过hibernate建立与表users对应的类Users。
在Struts框架创建的index.jsp表单中输入users信息,将此信息转换成一个对象,通过struts的action和hibernate的映射机制将对象存入数据库中。
三、实验原理简介
持久(Persistence)化,即把内存中的临时对象转换成可永久保存的数据(如存入数据库或文件中)。
持久化的主要应用是将内存中的临时对象存储在关系数据库中。
使用Hibernate实现数据持久化,就是要建立对象与数据库表中元组之间的映射关系。
具体实现是利用两个xml配置文件,在其中的一个hibernate.cfg.xml文件中指定了数据库的连接的相关参数和映射文件的名称,而另一个文件*.hbm.xml(在此例中为users.hbm.xml)定义了对象(Users.class)中的属性与数据库表(Users)中的字段之间的对应关系。
这样当使用对象中的方法(在此例中对象的方法定义在Users.java中)对对象中的某些属性进行操作时,属性在数据库中对应的字段值也会发生相应的变化。
四、实验环境
实验室环境。
自己可以通过“一键”安装,安装MyEclipse8.X。
五、实验步骤
1.基本步骤
(1)创建Web工程,名为TestS2H。
(2)按实验四的实验步骤配置好struts2环境,包括messageResource_zh_CN.properties。
2.准备数据库和数据源
(1)在SQLServer2000中创建数据库test,和表users。
SQL脚本如下:
Usetest
CREATETABLEnews(
idintIDENTITY(1,1)primarykey,
titlevarchar(20)NOTNULL,
contenttext
)
go
建立好的表结构如图5-1。
图5-1users表结构
(2)打开myeclipse的databaseexplore透视图,如图5-2。
图5-2打开数据库浏览器透视图
(3)新建数据库连接,如图5-3。
找到jtds-1.2.jar包所在位置。
点击AddJARS,把该包包含进去即可。
注意,实验室环境的密码是111111。
注意:
在Web应用中Drivertemplate是MicrosoftSQLServer(jTDSDriver)(对SQLServer200X)。
图5-3新建数据库连接
3.添加Hibernate能力
(1)切换到MyEclipse窗口,准备添加Hibernate能力,如图5-4。
图5-4准备添加Hibernate能力
(2)添加Hibernate所需的包,使得工程为Hibernate工程。
(注意:
这次严格按下面的设置进行,不要添加其它设置)
图5-5添加Hibernate所需的包
(1)
图5-6添加Hibernate所需的包(Hibernate3.2.5的页面)
图5-7添加Hibernate所需的包(3)
图5-8NewHibernateProject
(1)
图5-9NewHibernateProject
(2)
4.添加Hibernate所需的数据库配置文件和映射文件
(1)连接test数据库,如图5-10。
图5-4连接数据库
将test数据库展开后,如图5-11。
图5-5数据库连接展开后
(2)准备生成映射文件,操作如图5-12。
图5-13生成映射文件
(3)设置Hibernate映射引擎所需要的信息,操作如图5-14.。
图5-14HibernateReverseEngineering
点击下一步,IDGenerater项选择increment。
点击下一步,Finished。
(4)添加日志配置。
在src/目录下添加文件:
log4j.properties。
其具体配置如下:
log4j.rootLogger=INFO,CONSOLE
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d[%t]%-5p%c-%m%n
#PrintonlymessagesoflevelWARNoraboveinthepackagecom.foo.
#.foo=WARN
#log4j.logger.au.gov.sa.health.oacis=DEBUG
#log4j.logger.org.apache.struts2=DEBUG
#log4j.logger.org.apache=INFO
#log4j.logger.org.hibernate=INFO
#log4j.logger.ca.uhn=INFO
###logHQLqueryparseractivity
#log4j.logger.org.hibernate.hql.ast.AST=debug
###logjusttheSQL
log4j.logger.org.hibernate.SQL=debug
###logJDBCbindparameters###
log4j.logger.org.hibernate.type=INFO
#log4j.logger.org.hibernate.type=debug
###logschemaexport/update###
log4j.logger.org.hibernate.tool.hbm2ddl=DEBUG
###logcacheactivity###
#log4j.logger.org.hibernate.cache=debug
###logtransactionactivity
#log4j.logger.org.hibernate.transaction=debug
###logJDBCresourceacquisition
#log4j.logger.org.hibernate.jdbc=debug
###enablethefollowinglineifyouwanttotrackdownconnection###
###leakageswhenusingDriverManagerConnectionProvider###
#log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider=trace
(5)工程目录结构,如图5-15。
图5-15工程目录结构
5.实现业务操作
(1)修改LoginAction.java
packagecom.jee;
importcom.dao.Users;
importcom.opensymphony.xwork2.ActionSupport;
importorg.hibernate.HibernateException;
importorg.hibernate.Session;
importorg.hibernate.SessionFactory;
importorg.hibernate.Transaction;
importorg.hibernate.cfg.Configuration;
publicclassLoginActionextendsActionSupport
{
privatestaticfinallongserialVersionUID=1L;
privateStringusername;
privateStringpassword;
publicStringgetUsername()
{
returnusername;
}
publicvoidsetUsername(Stringusername)
{
this.username=username;
}
publicStringgetPassword()
{
returnpassword;
}
publicvoidsetPassword(Stringpassword)
{
this.password=password;
}
publicStringexecute()throwsException
{
try{
//实例化SessionFactory
SessionFactorysf=newConfiguration().configure().buildSessionFactory();
//实例化Session
Sessionsession=sf.openSession();
//开始事务
Transactiontx=session.beginTransaction();
//创建消息实例
Usersuser=newUsers();
user.setUsername(getUsername());
user.setPassword(getPassword());
//将实例数据保存到数据库
session.save(user);
mit();
session.close();
returnSUCCESS;
}catch(HibernateExceptione){
e.printStackTrace();
returnERROR;
}
}
}
6.创建表现层
(1)修改index.jsp
<%@pagelanguage="java"contentType="text/html;charset=UTF-8"%>
<%@taglibprefix="s"uri="/struts-tags"%>
textname="loginPage"/>
将用户名和密码保存到数据库test中。
formaction="login"> textfieldname="username"key="user"/> passwordname="password"key="pass"/> submitkey="save"/> form> (2)在messageResource_zh_CN.properties里添加一条: save=保存,以便显示中文。 (3)修改welcome.jsp <%@pagelanguage="java"contentType="text/html;charset=UTF-8"%> <%@taglibprefix="s"uri="/struts-tags"%> textname="succPage"/>
欢迎,
propertyvalue="username"/>
数据已成功保存到数据库test。
(4)修改error.jsp
<%@pagelanguage="java"contentType="text/html;charset=UTF-8"%>
<%@taglibprefix="s"uri="/struts-tags"%>
textname="errorPage"/>
你输入的用户名:
propertyvalue="username"/> 数据保存到数据库失败。 textname="failTip"/> 7.部署工程,启动服务器,测试工程。 8.总结 (1)掌握整个步骤和方法 Hibernate的一个显著特点是O/R映射机制,它不仅提供了从Java类到数据表的映射,也提供了数据查询和恢复等机制。 查看生成的文件及其文件的内容,具体知识请参考其他资料。 Struts2和Hibernate的整合主要是Struts的Action调用持久层的数据库封装的操作方法。 在本实验中我们只使用了save方法,其实还有很多的对数据库添加、修改、删除的基本操作方法,例如publicvoiddelete(UserspersistentInstance); publicUsersfindById(java.lang.Integerid); publicListfindByExample(Usersinstance); publicListfindByProperty(StringpropertyName,Objectvalue); publicListfindByUsername(Objectusername); publicListfindByPassword(Objectpassword); publicListfindAll(); publicUsersmerge(UsersdetachedInstance); publicvoidattachDirty(Usersinstance); publicvoidattachClean(Usersinstance); 或者使用HQL语言也可以像SQL语句一样执行。 以上的这些方法都会相应的转化为对应的SQL语句,并在数据库中执行,并将执行的结果返回。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验五 Struts2和Hibernate整合基础 实验 Struts2 Hibernate 整合 基础