实验五 Struts2和Hibernate整合基础.docx

上传人:b****3 文档编号:27349917 上传时间:2023-06-29 格式:DOCX 页数:16 大小:408.06KB
下载 相关 举报
实验五 Struts2和Hibernate整合基础.docx_第1页
第1页 / 共16页
实验五 Struts2和Hibernate整合基础.docx_第2页
第2页 / 共16页
实验五 Struts2和Hibernate整合基础.docx_第3页
第3页 / 共16页
实验五 Struts2和Hibernate整合基础.docx_第4页
第4页 / 共16页
实验五 Struts2和Hibernate整合基础.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

实验五 Struts2和Hibernate整合基础.docx

《实验五 Struts2和Hibernate整合基础.docx》由会员分享,可在线阅读,更多相关《实验五 Struts2和Hibernate整合基础.docx(16页珍藏版)》请在冰豆网上搜索。

实验五 Struts2和Hibernate整合基础.docx

实验五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"%>

<s:</p><p>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"%>

<s:</p><p>textname="succPage"/></p><p>

欢迎,

propertyvalue="username"/>


数据已成功保存到数据库test。

(4)修改error.jsp

<%@pagelanguage="java"contentType="text/html;charset=UTF-8"%>

<%@taglibprefix="s"uri="/struts-tags"%>

 

<s:</p><p>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模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1