Struts+Spring+Hibernate整合的简单实例
更新时间:2023-04-21 13:33:01 阅读量: 实用文档 文档下载
Struts+Spring+Hibernate整合的简单实例
通过Struts+Spring+Hibernate来实现一个简单的增删改查操作。我们分三层处理这个应用:一、表现层,我们使用Struts实现,负责处理用户请求,提供一个控制其代理。不适合在这层出现JDBC以及业务逻辑。二、持久层,使用Hibernate来查询相关信息、保存更新和删除数据库信息。业务逻辑同样不适合出现在该层。三、业务层,使用Spring来连接Bean,实现业务逻辑和业务验证,预留接口,管理业务层对象之间的依赖。这里程序通过edit,index和input.jsp三个页面实现对数据的增删改查操作。
整合SSH的步骤为:
1.新建WEB项目
MyEclipse下使用快捷键Alt+Shift+N新建一个WebProject项目,命名为SSH_example,选择JavaEE5.0。
2.增加Hibernate、Spring开发能力
导入Hibernate开发能力,注意最后一项时不要创建sessionFactory类。Spring导入Cord、AOP、persistenceCore、persistenceJDBC和WebLibraries五个库。最后创建SessionFactory类,使用Spring容器进行统一管理。
3.增加POJO类文件和Hibernate映射文件
打开DataBaseExplorer视图,将表test生成POJO类和映射文件。这些文件放在com.sshexample.model中。
4.编写DAO接口和实现类
DAO接口放在包com.sshexample.dao中,代码为:
[java]viewplaincopy
packagecom.sshexample.dao;
importjava.util.List;
importcom.sshexample.model.Test;
publicinterfaceTestDao{
//保存
publicvoidsave(Testt);
//删除
publicvoiddelete(Integeri);
//获得所有对象
publicListgetAll();
Struts+Spring+Hibernate整合的简单实例
//获得一个对象
publicTestgetTest(Integerid);
}
其实现类代码实现该接口的同时继承自HibernateDaoSupport超类,放置在包com.sshexample.dao.hibernate中,实现了增删改查的具体操作,代码如下:
[java]viewplaincopy
packagecom.sshexample.dao.hibernate;
importjava.util.List;
importorg.springframework.orm.hibernate3.support.HibernateDaoSupport; importcom.sshexample.dao.TestDao;
importcom.sshexample.model.Test;
publicclassTestDaoHibernateextendsHibernateDaoSupportimplementsTestDao{
publicvoiddelete(Integerid){
this.getHibernateTemplate().delete(getTest(id));
}
publicListgetAll(){
returnthis.getHibernateTemplate().find("fromTest");
}
publicTestgetTest(Integerid){
return(Test)this.getHibernateTemplate().get(Test.class,id);
}
publicvoidsave(Testt){
this.getHibernateTemplate().saveOrUpdate(t);
}
Struts+Spring+Hibernate整合的简单实例
}
5.编写服务层接口和实现类
在包com.sshexample.service中,新建服务层接口TestManager,定义增删改查操作接口,这里的增删改查和DAO接口操作类似,但服务对象则是Web层,可能会有一些启发方法。而DAO中,只声明了数据库基本操作。在
com.sshexample.service.impl中定义TestManagerImpl实现类,实现了上文中的TestManager接口。
接口TestManager代码为:
[java]viewplaincopy
packagecom.sshexample.service;
importjava.util.List;
importcom.sshexample.model.Test;
publicinterfaceTestManager{
//保存
publicvoidsave(Testt);
//删除
publicvoiddelete(Stringid);
//获得所有对象
publicListgetAll();
//获得一个对象
publicTestgetTest(Stringid);
}
实现类TestManagerImpl代码为:
[java]viewplaincopy
packagecom.sshexample.service.impl;
Struts+Spring+Hibernate整合的简单实例
importjava.util.List;
importcom.sshexample.dao.TestDao;
importcom.sshexample.model.Test;
importcom.sshexample.service.TestManager;
publicclassTestManagerImplimplementsTestManager{
privateTestDaotestDao;
publicTestDaogetTestDao(){
returntestDao;
}
publicvoidsetTestDao(TestDaotestDao){
this.testDao=testDao;
}
publicvoiddelete(Stringid){
testDao.delete(newInteger(id));
}
publicListgetAll(){
returntestDao.getAll();
}
publicTestgetTest(Stringid){
returntestDao.getTest(newInteger(id));
}
publicvoidsave(Testt){
testDao.save(t);
}
}
6.修改Spring配置文件
在Spring配置文件applicationContext.xml文件的源码格式下,右击选Spring->newDataSource,新建一个数据源Bean。设值为之前的
SQLServer2005Conn,如果提示出错,可能需要附加SpringPersistenceJDBC库。再新建一个Bean,ID为testDao,class为上文中实现了DAO操作的具体类testDaoHibernate。在其中添加一个属性sessionFactory作为注入的入口。注意保持name栏和具体实现类testDaoHibernate中得方法setTestDao方法名的后半段一致,以方便注入。
Struts+Spring+Hibernate整合的简单实例
7.增加Struts开发能力
附加struts开饭能力,选择Struts1.3版本,将基础包修改为
com.sshexample.web。
8.新建FormBean
修改Struts-config.xml文件,新建一个From,ActionandJSP项目,用例名为test,表格类型为动态表格,添加一个属性为name。下一步进行Action类配置,超类选择分发器动作dispatchAction。去掉输入源前面的form。
9.编辑Action类TestAction.java实现了操作。
Struts+Spring+Hibernate整合的简单实例
[java]viewplaincopy
packagecom.sshexample.web.action;
importjava.util.List;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importorg.apache.struts.action.ActionForm;
importorg.apache.struts.action.ActionForward;
importorg.apache.struts.action.ActionMapping;
importorg.apache.struts.action.DynaActionForm;
importorg.apache.struts.actions.DispatchAction;
importcom.sshexample.model.Test;
importcom.sshexample.service.TestManager;
publicclassTestActionextendsDispatchAction{
//testManager对象
privateTestManagertestManager;
//注入口
publicvoidsetTesetManager(TestManagertesetManager){
this.testManager=tesetManager;
}
//编辑方法
publicActionForwardedit(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse){
//动态ActionForm实例化
DynaActionFormtestForm=(DynaActionForm)form;
//参数
Stringid=request.getParameter("id");
//获得test对象
Testt=testManager.getTest(id);
//设值
testForm.set("name",t.getName());
//存储ID到request
request.setAttribute("id",id);
returnmapping.findForward("edit");
}
//更新数据
publicActionForwardsave(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse){
//动态ActionForm实例化
DynaActionFormtestForm=(DynaActionForm)form;
//参数
Struts+Spring+Hibernate整合的简单实例
Stringid=request.getParameter("id");
//获得test对象
Testt=null;
if(id==null){
t=newTest();
}else{
t=testManager.getTest(id);
}
//设值
t.setName((String)testForm.get("name"));
testManager.save(t);
returnlist(mapping,form,request,response);
}
//delete
publicActionForwarddelete(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse){
Stringid=request.getParameter("id");
testManager.delete(id);
returnlist(mapping,form,request,response);
}
privateActionForwardlist(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse){
Listlist=testManager.getAll();
request.setAttribute("test",list);
returnmapping.findForward("display");
}
publicActionForwardunspecified(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse){
returnnull;
}
publicActionForwardexecute(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse){
DynaActionFormtestForm=(DynaActionForm)form;//TODOAuto-generatedmethodstub
returnnull;
}
}
这些代码中,我们使用了TestManager类,需要在配置文件中依赖注入之。
10.编辑JSP页面
新建edit.jsp,input.jsp和display.jsp三个页面。对这三个页面进行修改。
Struts+Spring+Hibernate整合的简单实例
Display.jsp:
[html]viewplaincopy
<%@pagelanguage="java"contentType="text/html;charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@tagliburi="/tags-bean"prefix="bean"%> <%@tagliburi="/tags-html"prefix="html"%> <%@tagliburi="/jsp/jstl/core"prefix="c"%>
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w
/TR/html4/loose.dtd">
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=ISO-8859-1"> <title>Inserttitlehere</title>
</head>
<body>
Allitems:
<table>
<tr>
<th>id</th>
<th>name</th>
<th>edit</th>
<th>delete</th>
</tr>
<c:forEachitems="${requestScope['test']}"var="info">
<tr>
<td><c:outvalue="${info.id}"></c:out></td>
<td><c:outvalue="${}"></c:out></td>
<td><ahref="<c:urlvalue="/test.do?method=edit&id=${info.id}"/>">[E]</a></td>
<td><ahref="<c:urlvalue="/test.do?method=delete&id=${info.id}"/>">[X]</a></td>
</tr>
</c:forEach>
</table>
<ahref="input.jsp">Insert</a>
</body>
</html>
Input.jsp
[html]viewplaincopy
<%@pagelanguage="java"contentType="text/html;charset=ISO-8859-1"
Struts+Spring+Hibernate整合的简单实例
pageEncoding="ISO-8859-1"%>
<%@tagliburi="/tags-bean"prefix="bean"%> <%@tagliburi="/tags-html"prefix="html"%> <%@tagliburi="/jsp/jstl/core"prefix="c"%>
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w
/TR/html4/loose.dtd">
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=ISO-8859-1"> <title>Inserttitlehere</title>
</head>
<body>
<html:formaction="/test">
name:<html:textproperty="name"></html:text>
<html:errorsproperty="name"/>
<html:hiddenproperty="method"value="save"/>
<html:submit>tijiao</html:submit>
<ahref="<c:urlvalue="/test.do?method=list"/>">AllItems</a>
</html:form>
</body>
</html>
Edit.jsp
[html]viewplaincopy
<%@pagelanguage="java"contentType="text/html;charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
Struts+Spring+Hibernate整合的简单实例
<%@tagliburi="/tags-bean"prefix="bean"%> <%@tagliburi="/tags-html"prefix="html"%> <%@tagliburi="/jsp/jstl/core"prefix="c"%>
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w
/TR/html4/loose.dtd">
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=ISO-8859-1"> <title>Inserttitlehere</title>
</head>
<body>
<html:formaction="/test">
name:<html:textproperty="name"></html:text>
<html:errorsproperty="name"/>
<html:hiddenproperty="id"value="${requestScope['id']}"/>
<html:hiddenproperty="method"value="save"/>
<html:submit>tijiao</html:submit>
<ahref="<c:urlvalue="/test.do?method=list"/>">fanhui</a>
</html:form>
</body>
</html>
11.修改Web.xml、struts-config.xml和Spring配置文件
为以上项目建立关联关系,删除hibernater的数据库连接信息。
12.部署运行项目
正在阅读:
Struts+Spring+Hibernate整合的简单实例04-21
人教版运动训练 第二章 项群训练理论题库10-15
无功电容补偿在低压配电系统中的应用04-05
实验五 苯乙烯乳液聚合09-11
对文化全球化与本土化关系的辩证思考05-13
施工进度计划及工期保证措施(1)03-14
财产公证书怎么写09-29
销售工作计划范文模板03-06
自考市场营销小抄大全04-26
八年级语文试题卷12-18
- 1第6章 Struts2、Hibernate和Spring整合应用 课堂 精简
- 2Spring简单实例
- 3spring教程下载-ibatis、spring、struts2.0开发实例
- 4spring+hibernate+struts2应用mysql数据库乱码问题
- 5Struts2.3 spring3.1 hibernate4.0.1 搭建SSH框架
- 6spring+hibernate+struts2应用mysql数据库乱码问题
- 7Mysql Hibernate Spring 的配置及jdbc连接简单程序
- 8最新版本Struts2.3.12+Spring3.2.2+Hibernate4.2
- 9maven中整合Spring+hibernate的pom.xml文件的配置
- 10maven中整合Spring+hibernate的pom.xml文件的配置
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- Hibernate
- 实例
- 整合
- 简单
- Struts
- Spring
- 第二章液态材料铸造成形技术过程_材料成型技术基础
- 我身边工程哲学故事PPT
- 电磁场与电磁波姚毅版考试例题及习题精简版
- 幼儿园中班语言优质课教案――伞儿撑起来
- 地级市商业综合体的开发与运营规律
- 解放战争中的华东装甲兵
- 公民自觉履行的义务
- 金融危机下云南有色金属上市公司资产管理能力分析_以云南铜业公
- 岳阳市云溪区八年级上学期期中物理试卷27
- 地理:3.1《自然界的水循环》 学案(新人教必修1)
- 浅析MCS_51单片机I_O口的扩展
- 7000考研英语的周计划
- BS03NI改BS03II可燃气体使用说明书
- 《中国近代史》读书笔记2000字
- 51单片机秒表计时器课程设计报告(含C语言程序)
- 煤矿井下电气设备安装安全技术措施
- 1电动吊篮安拆方案
- 公安机关人民警察基本级执法资格考试试题
- :北语1203毕业预审通知
- 2011年广州小升初各民校的收费情况