rIn Java/J2EE Application Framework 12.8.2.使用 MultipartResolver 12.8.3.在一个表单中处理 multipart 124 12.9.处理异常 12.10.共同用到的工具 12.10.1.关于 pathmatcher的小故事 13.集成表现层 13.1.简介 13.2.和JSP&JSTL一起使用 Sprin 13.2.1.视图解析器 13.2.2.普通JSP页面和JSTL 22222222 13.2.3.其他有助于开发的标签 13.3. Tiles的使用 128 13.3.1.所需的库文件 128 13.3.2.如何集成 Tiles. 13. 4. Velocity 129 13.4.1.所需的库文件 129 13.4.2.分发器( Dispatcher Servlet)上下文 13. 4.3. Velocity propertie 13.4.4.视图配置 13.4.5.创建 Velocity模版 13.4.6.表单处理 133 13.4.7.总结 13.5.XSLT视图 13.5. 1. My first Words 13.5.2.总结 137 13.6.文档视图(PDF/ Excel) 137 13.6.1.简介 138 13.6.2.配置和安装 13. 7. Tapestry 139 13.7.1.架构 13.7.2.实现 141 13.7.3.小结 14 14.JMS支持 14.1.介绍 14.2.域的统 14.3. JmsTemplate 14.3. 1. ConnectionFactory 14.3.2.事务管理 149 14.3.3. Destination管理 149 14.4.使用 Jms Template 14.4.1.发送消息 14.4.2.同步接收 14.4.3.使用消息转换器 14.4.4. Session CallbackTuProducerCallback 152 15.EJB的存取和实现 1.访问H 153 15.1.1.概念 15.1.2.访问本地的无状态 Session bean(SLSB) 15.1.3.访问远程的无状态 Session bean(SLSB) Version 1.1
1+20%,+Ī$'1$, " " wxňï½¾B1+20%,+ < ½¾ėĘ ` ĊʼnŊ:ī ` ŋŌ0%+B%+*$,:ōŎ ` " í}ňÔĕ ~ " ~ " .ÙD ŏ ÙDݲwŐ D0,2&E ~ " ŀŁnłµ ~ " őÖÙDŒÌ.ÙDݲ ~ "" ÉÊœŔŌ :=ŕ "" Ý21$': "" Ŗą:ģņ "" Ĥĥí}Ý21$' "< £$1*2+- "< Ŗą:ģņ "< IJ µò42'0%+*$, D$,1$+ôŇŗņ "<" £$1*2+-0,0$,+2$' " "<< ŀŁPT " "<C «¬£$1*2+-ĭŘ " "<` ňï½¾ "" "<~ řŚ "< "C śD²ÝŀŁ "< "C - )2,'+ º,@' "C "C řŚ "~ "` ņŜŀŁ 4)3*$1 "~ "` " "` PT.ŝO " "~ Ý%0$'+,- " "~ ĹV < "~ ÓÔ < "~" ōŚ <` < ÙDæç < < < < Ş:şw < <" ÙB'Ý$B01%+$ < <" &&$*+2&)%*+,- < <" ùú¾ < <"" 4$'+2&%+2&ú¾ < << ÙB'Ý$B01%+$ C << Ššń C << ʼnêkŢ C <<" šńÇȵ C <<< D$''2&%119%*.,@*$,%119%* C C Ù#:ţÀ.ÓÔ C" C ĚċÙ# C" C Î C" C ĚċcĴ:ŤťŦD$''2& #$%&òD²D#ô C" C" ĚċŧÍ:ŤťŦD$''2& #$%&òD²D#ô CC D0,2&E 6 Ù%%Ù /0012*%+2& ),%B$, £$,'2&
Spring -java/J2EE Application Framework 15.2.使用 Spring提供的辅助类实现EJB组件 16.通过 Spring使用远程访问和web服务 16.1.简介 157 16.2.使用RMI提供业务 16.2.1.使用 RmiServiceExporter提供业务 16.2.2.客户端连接业务 使用Hessian或Burlap通过HTTP远程调用业务 16.3.1.为 Hessian建立 Dispatcher Servlet 16.3.2.使用 HessianServiceExporter提供你的bean 16.3.3.客户端连接业务 16.3.4.使用 Burlap 16.3.5.在通过Hessian或Burlap输出的业务中应用HTTP基本认证 16.4.使用HTP调用器输出业务 16.4.1.输出业务对象 161 16.4.2.在客户端连接业务 161 16.5.在选择这些技术时的一些考虑 17.使用 Spring邮件抽象层发送 Email 17.1.简介 17.2. Spring邮件抽象结构 17.3.使用 Spring邮件抽象 17.3.1.可插拔的 Mailsender实现 18.使用 Quartz或Time完成时序调度工作 18.1.简介 18.2.使用 Open Symphony Quartz Scheduler 18.2.1.使用 JobDetailBean 18.2.2. 1EMethodInvokingJobDetailFactoryBean 18.2.3.使用 triggers和 SchedulerFactory Bean来包装任务 169 18.3.使用 JDK Timer支持类 170 18.3.1.创建定制的 timers 18.3.2. t MethodInvoking TimerTask FactoryBean 170 18.3.3.包装:使用 TimerFactoryBean来建立task 171 A. Springs beans. dtd 172 B.结束语 B.1.项目手记 B.2.版权声明 180 B.3.翻译团队 B.4.项目进度 Spring Framework开发参考手册
C D0,2&E¿÷:ŨŔ;ÓÔÙ#ũ CC ` ÖŪD0,2&E ŧÍĚċ.$9Ćù C~ ` C~ ` Ī¿÷ūù C ` ĪB2D$,2*$30,+$,¿÷ūù C ` ŬŭŮĦkūù C `" Ĭ$''2%&ů#,1%0ÖŪĬÝÝŧͤūù C `" Ĭ$''2%&¬Ű42'0%+*$,D$,1$+ C `" Ĭ$''2%&D$,2*$30,+$,¿÷Ą:9$%& C `"" ŬŭŮĦkūù ` `"< #,1%0 ` `"C ÖŪĬ$''2%&ů#,1%0űŲ:ūùªĬÝÝ7cųŴ ` `< ĬÝݤµűŲūù ` `< űŲūù^_ ` `< ŬŭŮĦkūù ` `C ŵŶŷŸĐđŹ:wŸ¡ź ` ~ D0,2&EŻû_ĕ ŠB%21 `" ~ `" ~ D0,2&EŻû_ŚV `" ~" D0,2&EŻû_ `< ~" 俎:%21D$&@$,ÓÔ `` ğ%,+žůÝ2B$,ſ}Źƀ¤ƁK `~ `~ 0$&D-B0&- ğ%,+ž D*$@1$, `~ Ù94$+%21#$%& `~ $+@&2&EÙ94$+%21)%*+,-#$%& ` " +,2EE$,'.D*$@1$,)%*+,-#$%&¨ƂOƃù ` " Ù4Ƅ Ý2B$,æç; ~ " «¬a:+2B$,' ~ " $+@&2&EÝ2B$,Ý%')%*+,-#$%& ~ "" ƂOË Ý2B$,)%*+,-#$%&¨¬Ű+%'' ~ / D0,2&Eƅ' 9$%&'@+@ ~ # ŚƆƇ # ¢ # Řƈþÿ #" ƉƊƋƌ #< ¼Ɓ D0,2&E 6 Ù%%Ù /0012*%+2& ),%B$, D0,2&E ),%B$, Z¡¢ 22
前言 即使拥有良好的工具和优秀技术,应用软件开发也是困难重重。如果使用了重量级,难于控制,不能 有效控制开发周期的平台那么就让应用开发变得更为困难。 Spring为已建立的企业级应用提供了一个 轻量级的解决方案,这个方案包括声明式事务管理,通过RM或 webservices远程访问业务逻辑,mail 支持工具以及数据库持久化的多种选择。 Spring还提供了一个MC应用框架,可以透明的把AOP集成到 你的软件中的途径和一个优秀的异常处理体系,包括自动从 Spring特有的异常体系中映射 Spring有潜力成为所有企业应用的一站式(即在一个服务点可以完成所有服务,译者注)选择,同时, Spring也是组件化的,允许你使用它的部分组件而不需牵涉其他部分。你可以使用bean容器,在前台 展现层使用 Struts,你还可以只使用 Hibernate集成部分或是JDBC抽象层. Spring是无侵入性的,意味着 根据实际使用的范围,应用对框架的依赖几乎没有或是绝对最小化的 该文档提供对 Spring特性的参考指南,该文档的编辑目前仍在进行中,如果你有任何的要求或建议,请 把它们发表至用户邮件组或位于 SourceForge项目主页上的论坛 http://www.sf.net/projects/springframework 在我们继续之前,有些许感谢的话要说: Chris bauer( Hibernate项目组成员)准备和调整了 DocBook-XSL软件为了生成 Hibernate参考指南,同时也让我们生成了该文档 1.1
ƍ ƎœƏƐ:ī.ƑƒĐđIªƓ Ɣ{ƕƖƗƗƘĤƙ mƗƚčI ƖŌIz œƛ ij:ƜƝƞƟƠơª ƢvĢƕƖƘD0,2&E ƣ¬Ű:Ƥūčª¿÷mwx ƥƚč:nƦ[ƧIŷx[ƧƂƨþÿÜùú¾I ÖŪĪů$9'$,2*$'ŧÍĚċūùƩ´IB%21 æçīÁÂY¶ģçƪĨ:ƫĂŵŶƘ D0,2&Eă¿÷mwx£ªĸĹIäÁƬÿ:ƭ/ í}Ŋ Ą:Ɠ:ƮƯ.wxƑƒ:ėƽ¾ưƱI ƂƨMN©D0,2&Eeœ:ėĘưƱĽľƘ D0,2&EœƲƳ}ŖœƤūª:wƴÜƍwxĆùÐäÁſ}ŖœĆù(ƊL ŵŶI ʼnŹI D0,2&EƔ{ũĨ:IƵƶĄ |:ƷIJũyząƸƹÉÊƷIJƘĄäÁ 9$%&ijµ(Ɲ ĻÔĕ D+,+'(ĄăäÁƺ Ĭ29$,&%+$í}ƷIJů{Ù4#û_ĕ D0,2&E{Ťƻ!H:(Ƽƽƾ ƿ¶Óǀ :ǁǂ(ª^ĸĹ:ǃDŽDžœů{dž^LJōĨ: LjņŜ¿÷^D0,2&EeH:Z¡ljNJ(LjņŜ:³´Nj¼(ĤƙĄœƃĥ:Ønjů¬ö( Ǎ ƭ|ǎ ňǏŭŻũůõŌD,*$),E$ŅŒŇ:ǐǑË ++0Ë'5&$+0,ǒ$*+''0,2&E5,%B$, ǓǎǔǕq(œŸƶǖǗ:ǘØǙË,2' #%$,Ĭ29$,&%+$ũ}ǚǛǜ.¤ǝm 4*#6śD²Ɠmg}Ĭ29$,&%+$Z¡ljNJ(ʼnŹƔơǓǎg}mLjņŜ £$,'2& 222
第1章简介 1.1.概览 Spring包含许多功能和特性,并被很好地组织在下图所示的七个模块中。本节将依次介绍每个模块. Spring ORM g Web Web util ties Spring Web Spring AOP MVC Web MvC Framework AOP infrastructure Spring Context DF Excel Spring DAO Application context DAO support JNDI, EJB support& Remoting Spring Core Spring框架概览 Core包是框架的最基础部分,并提供依赖注λ( Dependency Injection)特性来使你可管理Bean容器 功能。这里的基础概念是 BeanFactory,它提供 Factory模式来消除对程序性单例的需要,并允许你 从程序逻辑中分离出依赖关系的配置和描述。 构建于 Beans包上 Context包,提供了一种框架式的Bean访问方式,有些象JNI注册。 Context包的特 性得自 Beans包,并添加了文本消息的发送,通过比如资源串,事件传播,资源装载的方式和 Context 的透明创建,如通过 Servlet容器。 DA0包提供了JDBC的抽象层,它可消除冗长的JDBC编码和解析数据库厂商特有的错误代码。该包也提 供了一种方法实现编程性和声明性事务管理,不仅仅是针对实现特定接口的类,而且对所有的POJ0。 ORM包为流行的关系一对象映射APIs提供了集成层,包括JD0, Hibernate和 iBatis。通过ORM包,你可 与所有 Spring提供的其他特性相结合来使用这些对象/关系映射,如前边提到的简单声明性事务管理 Spring的AOP包提供与AO联盟兼容的面向方面编程实现,允许你定义,如方法拦截器和切点,来干净 地给从逻辑上说应该被分离的功能实现代码解耦。使用源码级的元数据功能,你可将各种行为信息合 并到你的代码中,有点象.Net的 attribute Spring的web包提供了基本的面向Web的综合特性,如 Multipart功能,使用 Servlet监听器的 Context 的初始化和面向Web的 Applicatin Context。当与 WebWork或 Struts一起使用 Spring时,这个包使 Spring可与其他框架结合 Version 1.1
D0,2&EƂǞƶƫ.eHIǟßǠƐĴũǡŗŁŖǢ:ǣxĭǤƘcǥǦę ǧxĭǤ D0,2&EĸĹ ,$Ƃ{ĸĹ:LJ78ƷIJI ǟ¿÷ !ò4$0$&@$&*- &ǒ$*+2&ôeH¨ Ąäú¾#$%&ijµ Ƙ ŷǨ:78 Î{#$%&)%*+,-I|¿÷)%*+,-ĭܨšǩ^ÍƀHïð:ąØI ǟƵƶĄ ©ÍƀƩ´IJǪŲŋƱ:PT.ǫîƘ V¬Ō#$%&'ƂŇ&+$3+ƂI¿÷mwĂĸĹÜ:#$%&Ěċ[ÜI œŸ_ÙĀ4 Ƙ&+$3+Ƃ:e HvM#$%&'ƂIǟĿmņcšń: ŠIÖŪǬĤǭI ǮIOǯ:[Ü.&+$3+ :Ƭÿ«¬IĤÖŪD$,1$+ijµƘ 4/ Ƃ¿÷mÙ4#:û_ĕI|äšǩǰDZ:Ù4#³¯.nłY¶ģDzeœ:ĝĞ®¯Ƙ LjƂƔ¿ ÷mwĂ[\ÓÔ³ÍH.þÿHùú¾Izdzdz{Ǵ^ÓÔeakl:;I yǵ^Ŗœ: Ù Ƙ ĪƂǶ:ŋƱǷ^_Ľľ/'¿÷mí}ĕIƂƨÙ4 IĬ29$,&%+$.2#%+2'Ƙ ÖŪ ĪƂIĄä AŖœD0,2&E¿÷:ÉÊeHǸŚJ¨ ŷŸ^_ŋƱĽľI Ĥǹ¿Ŋ:ïþÿHùú¾ Ƙ D0,2&E:/ Ƃ¿÷A/ ǺǻǼij:Ì[̳ÍÓÔIƵƶĄabI Ĥ[\įݵ.ÏÐI¨ǽǾ Ĵø©Ʃ´ŇǙªLjßIJǪ:ÓÔ®¯nǿƘ ¯č:âY¶IĄäǦȀĂŃńJ ǟŊĄ:®¯IœÐ_Ā$+:%++,29+$Ƙ D0,2&E:º$9Ƃ¿÷m7c:̺$9:ȁJeHIĤ1+20%,+I D$,1$+Ȃȃµ:&+$3+ :ȄȅĨ.̺$9:/0012*%+2& &+$3+Ƙ ȆAº$9º,ůD+,+'wŐ D0,2&EŹIŷxƂ D0,2&EäAÉÊĸĹŚJƘ £$,'2&
简介 Spring的 Web mvc包提供了面向Web应用的 Model-view- controller实现。 Spring的MC实现不仅仅是 种实现,它提供了一种 domain model代码和 web form的清晰分离,这使你可使用 Spring框架的所有其 他特性,如校验. 1.2.使用场景 利用积木方式来描述你在各种场合使用 Spring的情况,从 Applet一直到完整的使用 Spring的事务管理 功能和Web框架的企业应用。 Velocity, XSLT, PD Spring Web MVc WebApplication context providing e.g. messaging Spring Web Declarative transaction management for POJOs Spring Context Custom business logic Spring AOP Spring ORM Hibernate mappings Custom Hibernate dAos Spring Core Spring DAO Servlet Container(Tomcat /Jetty) 典型的完整 Spring Web应用 一个典型的使用大部分 Spring特性的Web应用。使用 TransactionProxy Factory Beans,Web应用是完全事务性 的,就像使用EJB提供的那种容器管理的事务一样.所有的你的自定义业务逻辑可以通过简单的POJ0 来实现,并通过 Spring的 Dependency Injection容器进行管理。其他的服务,如发送emai1和校验,独 立于Web层,使你能够决定在哪里执行校验规则。 Spring的ORM支持包含了 Hibernate,JD0和 iBatis 。如使用 HibernateDaoSupport,你可复用已经存在的 Hibernate映射。从 Controller无缝整合web层和领 域模型,消除对 Action Forms的需要和其他转换HTP参数为领域模型的类。 Version 1.1
D0,2&E:º$9 £Ƃ¿÷m̺$9ª:@$16£2$6&+,11$,ÓÔƘ D0,2&E:£ÓÔzdzdz{w ĂÓÔI|¿÷mwĂ@B%2& B@$1®¯.$9 5,B:ȇȈIJǪI ŷ Ąä D0,2&EĸĹ:ŖœÉ ÊeHIĤ¸¹ fg ÛȉȊ[ܨǫîĄȀĂJ D0,2&E:ȋȌI ©/001$+wȍŊſǝ: D0,2&E:ùú¾ .º$9ĸĹ:ƤūªƘ ȎÆ:ſǝD0,2&E º$9ª wxȎÆ: ȏƷIJD0,2&EeH:º$9ªƘ Ý,%&'%*+2&,3-)%*+,-#$%&'I º$9ª{ſȐùH :IƠȑ Ù#¿÷:ƞĂijµú¾:ùwȒȓ Ŗœ:Ą:MabūùƩ´äÁÖŪï: Ù ¨ÓÔIǟÖŪD0,2&E:4$0$&@$&*- &ǒ$*+2&ijµ¼ú¾ƘÉÊ:ĆùIĤ Š$B%21.¸¹IȔ ŰŌº$9ĕI ĄȕƦaȖǨĠ¸¹ȗȘƘ D0,2&E: ĪæçƂǞmĬ29$,&%+$IÙ4 .2#%+2' ƘĤ Ĭ29$,&%+$4%D00,+I ĄäșƣȚţ:Ĭ29$,&%+$ĽľƘ©&+,11$,ŤțǝJ$9ĕ.Ȝ ŞĭÆI šǩ^/*+2&),B':ąØ.ÉÊÇÈĬÝÝZYȜŞĭÆ:;Ƙ £$,'2&