Spring基础教程.docx

上传人:b****8 文档编号:10046305 上传时间:2023-02-08 格式:DOCX 页数:47 大小:1.38MB
下载 相关 举报
Spring基础教程.docx_第1页
第1页 / 共47页
Spring基础教程.docx_第2页
第2页 / 共47页
Spring基础教程.docx_第3页
第3页 / 共47页
Spring基础教程.docx_第4页
第4页 / 共47页
Spring基础教程.docx_第5页
第5页 / 共47页
点击查看更多>>
下载资源
资源描述

Spring基础教程.docx

《Spring基础教程.docx》由会员分享,可在线阅读,更多相关《Spring基础教程.docx(47页珍藏版)》请在冰豆网上搜索。

Spring基础教程.docx

Spring基础教程

Spring快速入门教程

──开发你的第一个Spring程序翻译整理:

HantsyBai

 

本章学习用strutsMVC框架作前端,Spring做中间层,Hibernate作后端来开发一个简单的Spring应用程序。

在第4章将使用SpringMVC框架对它进行重构。

 

本章包含以下内容:

编写功能性测试。

配置Hibernate和Transaction。

载入Spring的applicationContext.xml文件。

设置业务代理(businessdelegates)和DAO的依赖性。

把spring写入Struts程序。

概述

 

你将会创建一个简单的程序完成最基本的CRUD(Create,Retrieve,Update和Delete)操作。

这个程序叫MyUsers,作为本书的样例。

这是一个3层架构的web程序,通过一个Action来调用业务代理,再通过它来回调DAO类。

下面的流程图表示了MyUsers是如何工作的。

数字表明了流程的先后顺序,从web层(UserAction)到中间层(UserManager),再到数据层(UserDAO),然后返回。

 

 

鉴于大多数读者都比较熟悉struts,本程序采用它作为MVC框架。

Spring的魅力在于它宣称式的事务处理,依懒性的绑定和持久性的支持。

第4章中将用Spring框架对它进行重构。

接下来你会进行以下几个步骤:

 

1.下载Struts和Spring。

2.创建项目目录和antBuild文件。

3.为持久层创建一个单元测试(unittests)。

4.配置Hibernate和Spring。

5.编写HIbernateDAO的实现。

6.进行单元测试,通过DAO验证CRUD。

7.创建一个Manager来声明事务处理。

8.为strutsAction编写测试程序。

9.为web层创建一个Action和model(DynaActionForm)。

10.进行单元测试,通过Action验证CRUD。

11.创建JSP页面,以通过浏览器来进行CRUD操作。

12.通过浏览器来验证JSP页面的功能。

13.用velocity模板替换JSP页面。

14.使用CommonsValidator添加验证。

下载Struts和Spring

 

1.下载安装以下组件:

•JDK1.4.2(或以上)

•Tomcat5.0+

•Ant1.6.1+

2.设置以下环境变量:

•JAVA_HOME

•ANT_HOME

•CATALINA_HOME

3.把以下路径添加到PATH中:

•JAVA_HOME/bin

•ANT_HOME/bin

•CATALINA_HOME/bin

 

为了开发基于java的web项目,开发人员必须事先下载必需的jars,建好开发目录结构和antbuild文件。

对于单一的struts项目,可以利用struts中现成的struts-blank.war。

对于基于SpringMVC框架的项目,可以用Spring中的webapp-minimal.war。

这只为开发作准备,两者都没有进行struts-spring集成,也没有考虑单元测试。

为此,我们为读者准备了Equinox。

Equinox为开发Struts-spring式的程序提供一个基本框架。

它已经定义好了目录结构,和antbuild文件(针对compiling,deploying,testing),并且提供了struts,spring,Hibernate开发要用到的jars文件。

Equinox中大部分目录结构和antbuild文件来自我的开源项目──AppFuse。

可以说,Equinox是一个简化的AppFuse,它在最小配置情况下,为快速web开发提供了便利。

由于Equinox源于AppFuse,所以在包名,数据库名,及其它地方都找到它的影子。

这是为让你从基于Equinox的程序过渡到更为复杂的AppFuse。

从上下载Equinox,解压到一个合适的位置,开始

准备MyUsers的开发。

创建项目目录和antbuild文件

 

为了设置初始的目录结构,把下载的Equinox解压到硬盘。

建议windows用户把项目放在C:

\Source,Unix/Linux用户放在~/dev(译注:

在当前用户目录建一个dev目录)中。

windows用户可以设置一个HOME环境变量,值为C:

\Source。

最简单的方法是把Equinox解压到你的喜欢的地方,进入equinox目录,运行antnew-Dapp.anme=myusers。

tips:

在windows使用cygwin(www.cygwin.org)就可以像Unix/Linux系统一样使用正斜杠,本书所有路径均采用正斜杠。

其它使用反斜杠系统(如windows中命令行窗口)的用户请作相应的调整。

现在MyUsers程序已经有如下的目录结构:

 

Equinox包含一个简单而功能强大的build.xml,它可以用ant来进行编译,布署,和测试。

ant中已经定义好targets,在equinox运行ant,将看到如下内容:

[echo]Availabletargetsare:

[echo]compile-->CompileallJavafiles

[echo]war-->PackageasWARfile

[echo]deploy-->Deployapplicationasdirectory[echo]deploywar-->DeployapplicationasaWARfile[echo]install-->InstallapplicationinTomcat[echo]remove-->RemoveapplicationfromTomcat[echo]reload-->ReloadapplicationinTomcat

[echo]start-->StartTomcatapplication[echo]stop-->StopTomcatapplication[echo]list-->ListTomcatapplications

[echo]clean-->DeletescompiledclassesandWAR

[echo]new-->Createsanewproject

 

Equinox支持tomcat的anttasks(任务)。

这些已经集成在Equinox中,解讲一下如何进行集成的有助于理解它们的工作原理。

Tomcat和ant

 

tomcat中定义了一组任务,可以通过Manager来安装(install),删除(remove),重载(reload)webapps。

要使用这些任务,可以把所有的定义写在一个属性文件中。

在Eqinox的根目录下,有一个名为tomcatTasks.properties包含如下内容。

 

deploy=org.apache.catalina.ant.DeployTaskundeploy=org.apache.catalina.ant.UndeployTaskremove=org.apache.catalina.ant.RemoveTaskreload=org.apache.catalina.ant.ReloadTaskstart=org.apache.catalina.ant.StartTaskstop=org.apache.catalina.ant.StopTasklist=org.apache.catalina.ant.ListTask

 

在build.xml定义一些任务来安装,删除,重新载入应用程序。

--TomcatAntTasks-->

depends="war">

password="${tomcat.manager.password}"path="/${webapp.name}"war="file:

$

{dist.dir}/${webapp.name}.war"/>

password="${tomcat.manager.password}"path="/${webapp.name}"/>

password="${tomcat.manager.password}"path="/${webapp.name}"/>

password="${tomcat.manager.password}"path="/${webapp.name}"/>

password="${tomcat.manager.password}"path="/${webapp.name}"/>

 

在上面列出的target中,必须定义一些${tomcat.*}变量。

在根目录下有一个

build.properties默认定义如下:

#PropertiesforTomcatServertomcat.manager.url=http:

//localhost:

8080/managertomcat.manager.username=admintomcat.manager.password=admin

 

确保admin用户可以访问Manager应用,打开$CATALINA_HOME/conf/tomcat-users.xml中是否存在下面一行。

如果不存在,请自己添加。

注意,roles属性可能是一个以逗号(“,”)隔开的系列。

 

为了测试所有修改,保存所有文件,启动tomcat。

从命令行中进行myusers目录,运

行antlist,可以看到tomcatserver上运行的应用程序。

好了,现在运行antdeploy来安装MyUsers。

打开浏览器,在地址栏中输入

http:

//localhost:

8080/myusers,出现如图2.4的“EquinoxWelcome”画面。

 

 

下一节,将写一个User对象和一个维护其持久性的HibernateDAO对象。

用Sping来

管理DAO类及其依赖性。

最会写一个业务代理,用到AOP和声明式事务处理。

为持久层编写单元测试

 

在myUsers程序,使用Hibernat作为持久层。

Hinbernate是一个O/R映像框架,用来关联java对象和数据库中的表(tables)。

它使得对象的CRUD操作变得非常简单,Spring结合了Hibernate变得更加容易。

从Hibernate转向Spring+Hibernate会减少75%的代码。

这主要是因为,ServiceLocater和一些DAOFactory类的废弃,spring的实时异常代替了Hibernate的检测式的异常。

写一个单元测试有助于规范UserDAO接口。

为UserDAO写一个JUint测试程序,要完成以下几步:

1.在test/org/appfuse/dao下新建一个UserDAOTest.java类。

它继承了同一个包中的BaseDAOTestCase,其父类初始化了Spring的ApplictionContext(来自web/WEB-INF/applictionContext.xml),以下是JUnit测试的代码。

packageorg.appfuse.dao;

//useyourIDEtohandleimports

publicclassUserDAOTestextendsBaseDAOTestCase{

privateUseruser=null;

privateUserDAOdao=null;

protectedvoidsetUp()throwsException{

log=LogFactory.getLog(UserDAOTest.class);

dao=(UserDAO)ctx.getBean("userDAO");

}

protectedvoidtearDown()throwsException{

dao=null;

}

publicstaticvoidmain(String[]args){

junit.textui.TestRunner.run(UserDAOTest.class);

}

 

}

这个类还不能编译,因为还没有UserDAO接口。

在这之前,来写一些来验证User的

CRUD操作。

2.为UserDAOTest类添加testSave和testAddAndRemove方法,如下:

 

publicvoidtestSaveUser()throwsException{

user=newUser();user.setFirstName("Rod");user.setLastName("Johnson");dao.saveUser(user);

assertTrue("primarykeyassigned",user.getId()!

=null);

log.info(user);

assertTrue(user.getFirstName()!

=null);

}

publicvoidtestAddAndRemoveUser()throwsException{

user=newUser();user.setFirstName("Bill");user.setLastName("Joy");dao.saveUser(user);assertTrue(user.getId()!

=null);

assertTrue(user.getFirstName().equals("Bill"));

if(log.isDebugEnabled()){

log.debug("removinguser...");

}dao.removeUser(user.getId());assertNull(dao.getUser(user.getId()));

}

从这些方法中可以看到,你需要在UserDAO创建以下方法:

saveUser(User)removeUser(Long)getUser(Long)

getUsers()(返回数据库的所有用户)

 

3.在src/org/appfuse/dao目录下建一个名为UserDAO.java类的,输入以下代码:

tips:

如果你使用eclipse,idea之类的IDE,左边会出现在一个灯泡,提示类不存在,可以

即时创建。

packageorg.appfuse.dao;

//useyourIDEtohandleimports

publicinterfaceUserDAOextendsDAO{

publicListgetUsers();

publicUsergetUser(LonguserId);

publicvoidsaveUser(Useruser);

publicvoidremoveUser(LonguserId);

}

为了UserDAO.java,UserDAOTest.java编译通过,还要建一个User.java类。

4.在src/org/appfuse/model下建一个User.java文件,添加几个成员变量:

id,firstName,lastName,如下。

packageorg.appfuse.model;

publicclassUserextendsBaseObject{

privateLongid;

privateStringfirstName;

privateStringlastName;

/*用你熟悉的IDE来生成getters和setters,Eclipse中右击>Source->GenerateGettersandSetters*/

}

注意,你继承了BaseObject类,它包含几个有用的方法:

toString(),equlas(),hasCode(),后两个是Hibernate必须的。

建好User后,用IDE打开UserDAO和UserDAOTest两个类,优化导入。

配置Hibernate和Spring

 

现在已经有了POJO(PlainOldJavaObject),写一个映像文件Hibernate就可能维护它。

1.在org/appfuse/model中新建一个名为User.hbm.xml文件,内容如下:

xmlversion="1.0"encoding="UTF-8"?

>

DOCTYPEhibernate-mappingPUBLIC"-//Hibernate/HibernateMappingDTD2.0//EN""

 

2.在web/WEB-INF/下的applictionContext.xml中添加映像。

打开文件,找到,改成如下:

 

org/appfuse/model/User.hbm.xml

 

在applictionContext.xml中,你可以看到数据库是怎幺工作的,Hibernate和Spring是如何协作的。

Eqinox会使用名为db/appfuse的HSQL数据库。

它将在你的ant“db”目录下创建,详细配置在“HowSpringIsConfiguredinEquinox”一节中描述。

3.运行antdeployreload(Tomcat正在运行),在Tomcat控制台的日志中可以看到,数据表正在创建。

INFO-SchemaExport.execute(98)|Runninghbm2ddlschemaexport

INFO-SchemaExport.execute(117)|exportinggeneratedschematodatabase

INFO-ConnectionProviderFactory.newConnectionProvider(53)|Initializingconnection

provider:

org.springframework.orm.hibernate.LocalDataSourceConnectionProvider

INFO-DriverManagerDataSource.ge

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

当前位置:首页 > 求职职场 > 简历

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

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