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.部署运行项目

本文来源:https://www.bwwdw.com/article/hcdq.html

Top