在Netbeans中使用Struts20+Spring25+Hibernate框架zhuan.docx
《在Netbeans中使用Struts20+Spring25+Hibernate框架zhuan.docx》由会员分享,可在线阅读,更多相关《在Netbeans中使用Struts20+Spring25+Hibernate框架zhuan.docx(16页珍藏版)》请在冰豆网上搜索。
在Netbeans中使用Struts20+Spring25+Hibernate框架zhuan
在Netbeans中使用Struts2.0+Spring2.5+Hibernate框架
(一)
2008-09-2215:
12:
19
查看(2015)/
评论
(1)
Netbeans6.1中加入了Spring2.5,Struts,Hibernate的支持,可以满足现在大部分企业应用SSH框架的开发需求。
本文将用一个简单的登陆例子来介绍如何在Netbeans6.1中使用SSH框架进行企业级开发。
本节介绍示例的准备工作、OR映射以及相关配置的方法。
下一节则介绍页面层和框架整合的关键技术。
软件需求:
1、1、JDK1.6
2、Netbeans6.1,下载并安装Struts2.0插件,Hibernate3.5支持以及库文件的插件
3、MySQL5数据库及JDBC驱动
4、Struts+Spring整合方案库 JDBC驱动和整合库在这里。
实验步骤:
1、1、在MySQL中建立数据库sshdemo,执行以下脚本:
SETFOREIGN_KEY_CHECKS=0;
------------------------------
--Tablestructureforuser
------------------------------
CREATETABLE`user`(
`userId`bigint(20)NOTNULLauto_increment,
`userName`varchar(20)NOTNULL,
`password`varchar(30)NOTNULL,
PRIMARYKEY (`userId`)
)ENGINE=InnoDBDEFAULTCHARSET=utf8;
------------------------------
--Records
------------------------------
INSERTINTO`user`VALUES('1','mg','123');
2、2、在Netbeans6.1中建立Web工程,在选择框架时选择SpringWebMVC2.5及Struts2.0和Hibernate,命名为SSHDemo,如下图所示:
点击工程右键-属性-库-添加Jar文件,加入ssh_lib.zip包中的两个包。
3、3、在源包中新建包po,dao,service,action四个包,分别用来放置ORM映射、数据库操作、业务逻辑以及Struts的Action。
4、4、建立Model,在po包中新建类User,代码如下:
publicclassUser{
privateStringname;
privatelongid;
privateStringpassword;
}
单击右键,选择“重构”-“封装字段”,选择所有字段进行封装,生成get和set方法。
5、5、建立Model和数据库的映射。
生成在源包中右键单击po包,新建-其他-Hibernate-HibernateConfigurationFile,如下图所示:
点击下一步,命名为hibernate1.cfg,点击下一步,在databaseconnection中把下拉框拉到最下面,点击“新建数据库连接”,如下图所示:
注意用户名和密码可以自己指定。
最后点击完成,在源包的缺省包中就会生成hibernate1.cfg.xml的Hibernate配置文件:
xmlversion="1.0"encoding="UTF-8"?
>
DOCTYPEhibernate-configurationPUBLIC"-//Hibernate/HibernateConfigurationDTD3.0//EN""
org.hibernate.dialect.MySQLDialect
com.mysql.jdbc.Driver
jdbc:
mysql:
//localhost:
3306/sshdemo
root
root
在po包中点击右键,选择新建-其他-Hibernate-HibernateMappingFile,命名为user.hbm,如下配置:
点击完成,生成user.hbm.xml,加入映射关系如下:
xmlversion="1.0"encoding="UTF-8"?
>
DOCTYPEhibernate-mappingPUBLIC"-//Hibernate/HibernateMappingDTD3.0//EN""
6、6、在SpringIoC容器中定义Hibernate的SessionFactory。
打开Web页-WEB-INF–applicationContext.xml,首先加入数据源的定义:
--指定连接数据库的驱动-->
--指定连接数据库的URL-->
mysql:
//localhost:
3306/sshdemo"/>
--指定连接数据库的用户名-->
--指定连接数据库的密码-->
然后加入Hibernate的SessionFactory的定义:
po/user.hbm.xml
hibernate.dialect=org.hibernate.dialect.MySQLDialect
Spring的配置文件有强大的提示功能:
7、7、建立Dao接口及实现。
在dao包中建立接口UserDao,代码如下:
publicinterfaceUserDao{
voidsave(Useruser)throwsException;
UsergetUser(longuserId);
UsergetUser(StringuserName);
}
建立实现类UserDaoImpl,代码如下:
packagedao;
importorg.springframework.orm.hibernate3.support.HibernateDaoSupport;
importpo.User;
/**
*
*@authorAdministrator
*/
publicclassUserDaoImplextendsHibernateDaoSupportimplementsUserDao{
publicvoidsave(Useruser)throwsException
{
try
{
getHibernateTemplate().save(user);
}
catch(Exceptionerr)
{
throwerr;
}
}
publicUsergetUser(longuserId)
{
return(User)getHibernateTemplate().get(User.class,userId);
}
publicUsergetUser(StringuserName){
return(User)getHibernateTemplate().find("fromUserasuwhereu.name=?
",userName).get(0);
}
}
该类继承于org.springframework.orm.hibernate3.support.HibernateDaoSupport,以方便地使用getHibernateTemplate()获得Hibernate支持。
如getUser方法,可以用getHibernateTemplate()方法获得工厂对象sessionFactory,调用find方法可以通过HQL语句来查找对象,而不必再编写复杂的SQL语句。
对实体的其他操作入插入操作则只需调用save方法。
由于Dao类必须调用sessionFactory,因此必须通过SpringIoC容器为Dao类注入sessionFactory。
在applicationContext.xml中添加以下配置:
至此,OR映射工作完成。
下一节将介绍页面层技术,包括国际化方案。
在Netbeans中使用Struts2.0+Spring2.5+Hibernate框架
(二)
2008-09-2215:
13:
34
查看(1756)/
评论
(1)
上一篇文章介绍了在Netbeans6.1中使用SSH框架的准备工作及OR映射的方法,这篇文章则继续介绍如何构建视图层和业务逻辑层以及在此过程中整合Struts和Spring框架。
1、建立业务逻辑。
在service包中创建业务接口UserService,代码如下:
packageservice;
importdao.UserDaoImpl;
importpo.User;
/**
*
*@authorAdministrator
*/
publicinterfaceUserServive{
voidaddUser(StringuserName,Stringpassword,intadmin)throwsException;
UsergetUser(longuserId);
UsergetUser(StringuserName);
voidsetUserDao(UserDaoImpluserDao);
}
创建实现类UserServiceImp,代码如下:
packageservice;
importpo.User;
/**
*
*@authorAdministrator
*/
publicclassUserServiceImplimplementsUserServive{
privatedao.UserDaouserDao;
publicvoidaddUser(StringuserName,Stringpassword,intadmin)throwsException{
po.Useruser=newUser();
//user.setId(10);
user.setAdmin(admin);
user.setName(userName);
user.setPassword(password);
try
{
userDao.save(user);
}
catch(Exceptionerr)
{
throwerr;
}
}
publicUsergetUser(longuserId)
{
returnuserDao.getUser(userId);
}
publicvoidsetUserDao(dao.UserDaoImpluserDao){
this.userDao=userDao;
}
publicUsergetUser(StringuserName){
returnthis.userDao.getUser(userName);
}
}
注意红色部分代码,为了访问数据库,必须引入userDao的对象,生成set的方法,并通过SpringIoC容器注入该属性,在applicationContext.xml中增加以下配置:
userDao的配置已经在上一篇文章描述过,引用的是以下这段配置:
service的方法就是通过调用dao的实体方法来操作的,如上面代码第二段红色的部分。
2、建立视图。
在web页面的example目录下新建JSP页面,命名为Login。
在文件头部添加Struts2.0的标签引入:
<%@taglibprefix="s"uri="/struts-tags"%>
在网页body标签中加入以下代码:
form.action="login"method="POST">
textfieldname="username"label="%{getText('username')}"/>
passwordname="password"label="%{getText('password')}"/>
submitvalue="%{getText('submit')}"/>
form>
Struts2.0的标签库功能很强大,网上有很多例程,在这里就不详述了。
关键的地方是lable属性里面的表达式,在这里,是为了国际化而设的。
要在Struts2.0中使用i18N,我们首先要在源包-缺省包中新建一个属性文件(点击新建-其他-属性文件),命名为struts。
在struts.properties中添加定义:
struts.custom.i18n.resources=globalMessages
这条语句指定资源文件的前缀,例如中文的资源文件可以命名为globalMessages_zh_CN,英文的可以命名为globalMessages_en_US。
我们在缺省包中分别创建这两个属性文件。
在中文的资源文件中加入以下:
username=用户名
password=密码
submit=提交
英文的资源文件加入:
username=Username
password=Password
submit=Submit
然后就可以在JSP页面中用%{getText('username')}的表达式来指定要读出的字符串了。
在Struts2.0中,我们不必再手动地把中文转换为Unicode码,框架会自动转换。
3、创建Action。
在action包中点击右键-新建-其他-Struts2-Struts2Action,命名为LoginAction。
Struts2.0中不再需要创建ActionForm,只要生成属性的get和set方法,就能够获取到页面标签name属性对应的值。
在这里,LoginAction继承com.opensymphony.xwork2.ActionSupport。
代码如下:
packageaction;
importcom.opensymphony.xwork2.ActionSupport;
importjava.util.Locale;
importorg.springframework.context.support.ResourceBundleMessageSource;
importpo.User;
importservice.UserServiceImpl;
/**
*
*@authormg
*/
publicclassLoginActionextendsActionSupport{
privateUserServiceImpluserService;
privateStringmessage;
privateStringusername;
privateStringpassword;
privateResourceBundleMessageSourcemessageSource;
publicLoginAction(){
}
@Override
publicStringexecute()throwsException{
Userusr=userService.getUser(username);
if(usr!
=null){
if(usr.getPassword().equals(password)){
message=messageSource.getMessage("loginSuccess",null,Locale.CHINA);
}else{
message=messageSource.getMessage("pswError",null,Locale.CHINA);
}
}else{
message=messageSource.getMessage("usrError",null,Locale.CHINA);
}
returnSUCCESS;
}
publicvoidsetUserService(UserServiceImpluserService){
this.userService=userService;
}
publicStringgetMessage(){
returnmessage;
}
publicvoidsetMessage(Stringmessage){
this.message=me