Spring 4 官方文档学习(十三)集成其他web框架
重点是通用配置,非常建议看一下!有助于理解Spring的ApplicationContext与Servlet Container的关系!
1、介绍
Spring Web Flow
SWF目标是成为web应用页面flow管理的最佳解决方案。
SWF集成了现有的框架,如Spring MVC 和 JSF,在Servlet和Portlet环境中。如果你有一个(或多个)业务处理,且 受益于会话模型而非纯请求模型,那SWF可能就是解决方案。
SWF允许捕获逻辑页面flows,并将其作为自包容的模块 -- 可在不同环境中复用,所以用它来构建web应用模块(that guide the user through controlled navigations that drive business processes)是非常理想的。
欲知更多,见Spring Web Flow website。
本章详细描述了Spring与第三方web框架的集成,如JSF。
Spring框架的一个核心价值观是enable choice (可选择、可拓展)。在普遍意义上,Spring不会强制使用或购买任何特定的架构、技术或方法(虽然肯定会推荐一些)。选择权留给开发者!
既然已经梳理了皮毛(就是前面的章节,真隐晦),那本章会将重心放在肉戏部分,就是如何集成你的web框架!由其他语言转到Java的开发者经常说的一件事是Java具有超级丰富的web框架。如此多的框架肯定不能一一涉猎,所以本章只挑选了4个最流行的web框架,先从通用的Spring配置开始,再细入特定的集成选项。
请注意,本章不会去解释如何使用具体的web框架。例如,如果你想使用JSF,我们会假定你已经熟悉了JSF。如果你需要了解更多关于具体web框架的信息,可以参考本章末尾部分。
2、Common configuration -- 通用配置
所谓通用配置,就是无论集成什么web框架都需要的配置,换句话说,就是与具体web框架无关的配置。
需要指出,在一个classic分层的架构中,web层仅仅是众多层中的一层;该层承担进入server侧应用的进入点(entry points),该层还委托service层的service objects (facades)来完成特定业务的使用情景。在Spring中,这些service objects、任何其他business-specific objects、dao等等,都存在于一个 busisness context 中 -- 注意,这里不包含web或表象层对象!!!表象层对象如Spring MVC controllers等通常是配置在presentation context中。
本章会详细描述如何配置一个包含所有business beans的Spring container (就是一个WebApplicationContext)。-- 包含所有???
具体的就是:所有的Spring web项目都需要在web.xml中声明一个ContextLoaderListener,然后添加一个contextConfigLocation <context-param> -- 用于指定Spring XML配置文件所在。
如下:
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext*.xml</param-value>
</context-param>
如果不指定contextConfigLocation,ContextLoaderListener会默认查找并加载 /WEB-INF/applicationContext.xml。一旦加载了context文件,Spring就会创建一个WebApplicationContext对象 -- 基于bean definitions,并将该WebApplicationContext对象存入web应用的ServletContext中!!!--- 终于明白了,大笑
所有的Java web框架都是建立在Servlet API上面的,因此都可以使用下面的代码来获取由ContextLoaderListener创建的'business context' ApplicationContext:
WebApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(servletContext);
这个WebApplicationContextUtils类是为了方便,这样就不需要去记住ServletContext attribute的name。该类的getWebApplicationContext()方法默认查找的key是WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE,如果找不到就会返回null。与其冒着空指针异常的风险,不如使用getRequiredWebApplicationContext()方法,如果没有ApplicationContext,该方法就会抛出异常。
一旦拥有了WebApplicationContext的引用,就可以根据名字或类型获取beans。多数开发者都是通过名字获取,然后类型强转。
幸运的是,本部分多数框架都有更简单的方式来查找beans。不止是获取beans更简单,还可以让你使用依赖注入。详见每种web框架。
3、JavaServer Faces 1.2
略
其他,略。
6、其他资源
官方文档链接:
http://docs.spring.io/spring/docs/current/spring-framework-reference/html/web-integration.html
Spring 4 官方文档学习(十三)集成其他web框架的更多相关文章
- Spring 4 官方文档学习(十一)Web MVC 框架
介绍Spring Web MVC 框架 Spring Web MVC的特性 其他MVC实现的可插拔性 DispatcherServlet 在WebApplicationContext中的特殊的bean ...
- Spring 4 官方文档学习(十一)Web MVC 框架之配置Spring MVC
内容列表: 启用MVC Java config 或 MVC XML namespace 修改已提供的配置 类型转换和格式化 校验 拦截器 内容协商 View Controllers View Reso ...
- Spring 4 官方文档学习(十一)Web MVC 框架之resolving views 解析视图
接前面的Spring 4 官方文档学习(十一)Web MVC 框架,那篇太长,故另起一篇. 针对web应用的所有的MVC框架,都会提供一种呈现views的方式.Spring提供了view resolv ...
- Spring 4 官方文档学习(十一)Web MVC 框架之编码式Servlet容器初始化
在Servlet 3.0+ 环境中,你可以编码式配置Servlet容器,用来代替或者结合 web.xml文件.下面是注册DispatcherServlet : import org.springfra ...
- Spring 4 官方文档学习(十一)Web MVC 框架之HTTP caching support
一个良好的HTTP缓存策略可以显著地增进web应用的性能和其客户端的体验.主要使用"Cache-Control" HTTP response header来完成,配合conditi ...
- Spring 4 官方文档学习(十一)Web MVC 框架之约定优于配置
当返回一个ModelAndView时,可以使用其addObject(Object obj)方法,此时的约定是: An x.y.User instance added will have the nam ...
- Spring 4 官方文档学习(十一)Web MVC 框架之异常处理
1.HandlerExceptionResolver Spring HandlerExceptionResolver的实现们会处理controller执行过程中发送的unexpected except ...
- Spring 4 官方文档学习(十一)Web MVC 框架之Flash Attributes
接上一篇中的重定向. http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-fl ...
- Spring 4 官方文档学习(十一)Web MVC 框架之multipart(文件上传)支持
http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-multipart 1.简 ...
- Spring 4 官方文档学习(十一)Web MVC 框架之themes
http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-themeresolver ...
随机推荐
- MapReduce工作原理讲解
第一部分:MapReduce工作原理 MapReduce 角色•Client :作业提交发起者.•JobTracker: 初始化作业,分配作业,与TaskTracker通信,协调整个作业.•TaskT ...
- 基于springmvc和restClient的rest服务的测试
在开发中,不熟悉驱动驱动测试开发的coder往往喜欢将服务应用启动以后测试,对于GET请求可以直接在浏览器中输入URL就可以,参数非中文可以直接追加到URL后.但是,对于其他请求方式的测试必须借助相应 ...
- Java上面出现这个错误如何解决关于XML的
Java上面出现这个错误如何解决关于XML的 2015-01-07 14:49 hejiashun11325 | 分类:JAVA相关 | 浏览265次 The type org.xmlpull.v1. ...
- VBS实现定时发送邮件
原理:建立CDO.Message对象,设置好参数后直接Send就可以了 代码如下: NameSpace = "http://schemas.microsoft.com/cdo/configu ...
- 提升linux下tcp服务器并发连接数限制
1.修改用户进程可打开文件数限制 在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统 ...
- 定制自己的linux系统
算是总结式文档,以备后忘 先说一下背景,一开始我就知道有这个任务,同时我自己也非常感兴趣,打算去研究研究 于是才同意接这个任务,但是我的原意是从头开始搭建系统,也就是lfs 但接到任务后,由于种种原因 ...
- java -cp
java -cp /home/hdp/log4jTest/log4j-1.2.17.jar:/home/hdp/log4jTest/testLog.jar:/home/hdp/log4jTest/co ...
- 《深度探索C++对象模型(Inside The C++ Object Model )》学习笔记
转载:http://dsqiu.iteye.com/blog/1669614 第一章 关于对象 使用class封装之后的布局成本: class并没有增加成本,data members直接内含在每一个c ...
- 手动部署servlet
1.编写servlet,在tomcat\webapps目录下新建文件Test,Test目录如下 Test | classes web.xml | test01 | Servletfirst.jav ...
- sublime中侧边栏字体大小的设置
sublime这个编辑器相当强大,但是它的侧边栏字体实在是太小了,实在是反人类的设计,幸好它给了我们修改的机会 第一步:下载PackageResourceViewer插件,通过PackageContr ...