Struts2和Hibernate整合.docx

上传人:b****4 文档编号:11718898 上传时间:2023-03-31 格式:DOCX 页数:14 大小:278.21KB
下载 相关 举报
Struts2和Hibernate整合.docx_第1页
第1页 / 共14页
Struts2和Hibernate整合.docx_第2页
第2页 / 共14页
Struts2和Hibernate整合.docx_第3页
第3页 / 共14页
Struts2和Hibernate整合.docx_第4页
第4页 / 共14页
Struts2和Hibernate整合.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

Struts2和Hibernate整合.docx

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

Struts2和Hibernate整合.docx

Struts2和Hibernate整合

实验五Struts2和Hibernate3整合应用

一、目的和要求

本实验是为了让学生对持久化技术有一个初步了解,并熟悉在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将对象存入数据库中。

三、实验原理简介

持久(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘),持久化的主要应用是将内存中的数据存储在关系型的数据库中。

要在Hibernate中实现数据的持久化,就是要建立对象中的属性与数据库中的表的映射关系,具体实现是利用两个xml配置文件,在其中的一个hibernate.cfg.xml文件中指定了数据库的连接的相关参数和映射文件的名称,而另一个文件*.hbm.xml(在此例中为users.hbm.xml)定义了对象(Users.class)中的属性与数据库表(Users)中的字段的对应关系。

这样当对象中的方法(在此例中对象的方法定义在Users.java中)对对象中的某些属性进行操作的时候,属性在数据库中对应的字段也就相应的发生了改变。

四、实验环境

实验室环境。

五、实验步骤

1.创建Web工程,名为TestS2H。

2.按实验四的实验步骤配置好struts2环境(参照实验四),例如添加Struts2所需的包,并配置web.xml,struts.xml,struts.properties,messageResource_zh_CN.properties,创建包和类等都和实验四相同。

3.在SQLServer2000中创建数据库test,和表users。

SQL脚本如下:

CREATEDATABASEtest;

USEtest;

CREATETABLE[dbo].[users](

[id][int]IDENTITY(1,1)NOTNULL,

[username][varchar](20)COLLATEChinese_PRC_CI_ASNOTNULL,

[password][varchar](20)COLLATEChinese_PRC_CI_ASNULL

)ON[PRIMARY]

GO

建立好的表结构如图5-1。

图5-1users表结构

4.打开myeclipse的databaseexplore透视图,如图5-2。

图5-2打开数据库浏览器透视图

5.新建数据库连接,如图5-3。

jtds-1.2.jar包在C:

\java\jdbcforSQLServer目录下可以找到。

点击AddJARS,把该包包含进去即可。

注意,实验室环境的密码是111111。

图5-3新建数据库连接

6.连接test数据库,如图5-4。

图5-4连接数据库

将test数据库展开后,如图5-5。

图5-5数据库连接展开后

7.生成映射文件。

操作如图5-6。

图5-6生成映射文件

8.Hibernate映射引擎,操作如图5-7.。

图5-7HibernateReverseEngineering

点击下一步,IDGenerater项选择native。

点击下一步,Finished。

9.切换到MyEclipse窗口,操作如图5-8。

图5-8切换到MyEclipse窗口

10.添加Hibernate所需的包以及创建Hibernate工程。

操作方法如图5-9到图5-13。

图5-9添加Hibernate所需的包

(1)

图5-10添加Hibernate所需的包

(2)

图5-11添加Hibernate所需的包(3)

图5-12NewHibernateProject

(1)

图5-13NewHibernateProject

(2)

11.添加日志配置。

在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

12.工程目录结构,如图5-14。

图5-14工程目录结构

13.修改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;

}

}

}

14.创建表现层。

将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>

同时在messageResource_zh_CN.properties里添加一条:

save=保存,这样就会成功显示中文。

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。

error.jsp修改为:

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

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

 

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

你输入的用户名:

propertyvalue="username"/>

数据保存到数据库失败。

textname="failTip"/>

15.部署工程,启动服务器,测试工程。

16.总结:

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语句,并在数据库中执行,并将执行的结果返回。

Hibernate的一个显著特点是O/R映射机制,它不仅提供了从Java类到数据表的映射,也提供了数据查询和恢复等机制。

具体知识请参考其他资料。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 工作总结汇报

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

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