Spring的web框架围绕DispatcherServlet设计。
DispatcherServlet的作用是将请求分发到不同的处理器。
Spring的web框架包括可配置的处理器(handler)映射、视图(view)解析、本地化(local)解析、 主题(theme)解析以及对文件上传的支持。
Spring的Web框架中缺省的处理器是Controller 接口,这是一个非常简单的接口,仅包含ModelAndView handleRequest(request, response) 方法。
可以通过实现这个接口来创建自己的控制器(也可以称之为处理器),但是更推荐继承Spring提供的一系列控制器, 比如AbstractController、AbstractCommandController 和SimpleFormController。
注意,需要选择正确的基类:如果没有表单,就不需要一个FormController。 这是和Struts的一个主要区别。
Spring Web MVC允许使用任何对象作为命令对象(或表单对象)- 不必实现某个特定于框架的接口或从某个基类继承。
这也是和Struts相比的另一个重要区别,Struts是围绕 Action和ActionForm等基类构建的。
Spring实际上基于 Map的model(也就是MVC中的M)是高度抽象的,适用于各种表现层技术。
也就是说,任何表现层都可以直接和Spring集成,无论是JSP、Velocity还是其它表现层技术。
贯穿整个Spring web框架(甚至整个Spring框架)的一个设计原则是:“ 对扩展开放,对修改封闭(开闭原则 OCP)”。
从web层的角度看,可以以root application context实例为入口,把Spring作为一个library使用。可以很容易地将所选择的web框架和Spring结合起来。
Spring Web Flow(SWF)的目标是成为Web应用程序页面流转管理的最佳解决方案。
SWF在servlet和portlet环境中都与比如Spring MVC,Struts,和JSF这样的现存框架集成在一起。
SWF使你能够把逻辑上的页面流转捕捉为自容纳的模块,并在不同的情形下被复用。
而这对于开发要引导用户完成受控的浏览动作,从而驱动业务流程的Web应用程序模块正是理想的。
与其它web MVC框架一样,Spring的web MVC框架是一个请求驱动的web框架,其设计围绕一个中心的servlet进行。
它能将请求分发给控制器,并提供其它功能帮助web应用开发。
然而,Spring的DispatcherServlet 所做的不仅仅是这些,它和Spring的IoC容器完全集成在一起,从而允许你使用Spring的其它功能。
JSP和JSTL:
Spring为JSP和JSTL这些view层技术提供了几个即取即用的解决方案。
使用JSP和JSTL的话,采用 WebApplicationContext 中定义的普通视图解析器即可;当然,还需要自行编写一些实际做渲染的JSP页面。
Tiles:
在使用了Spring的web项目中,很可能会用到Tiles--就像任何其它的web层技术。
Velocity和FreeMarker:
Velocity 和FreeMarker 是两种模板语言,都可以做为view层技术在Spring MVC 应用中使用。
XSLT:
XSLT是一种用于XML的转换语言,并作为一种在web应用中使用的view层技术广为人知。
如果你的应用本来就要处理XML,或者模型数据可以很容易转化为XML,那么XSLT是一个很好的选择。
Spring简化了根据模型数据动态输出PDF文档或Excel电子表格的工作。
这些文档即最终视图,它们将以适当的内容类型用流的形式从服务器输出,并在客户端PC相应地启动PDF或电子表格浏览器(希望如此)。
为了使用Excel视图,你需要把'poi'库加到classpath中;使用PDF的话需要iText.jar。它们都已经包含在Spring的主发行包里。
对Excel来说,这意味着创建一个 org.springframework.web.servlet.view.document.AbstractExcelView (使用POI)
或 org.springframework.web.servlet.view.document.AbstractJExcelView (使用JExcelApi)的子类, 并实现 buildExcelDocument方法。
JasperReports ( http://jasperreports.sourceforge.net ) 是一个功能强大,开源的报表引擎, 支持使用一种易于理解的XML文档创建报表设计,并可以输出4种格式的报表:CSV、Excel、HTML和PDF。
JasperReports自身依赖于下面的项目:
BeanShell
Commons BeanUtils
Commons Collections
Commons Digester
Commons Logging
iText
POI
JasperReports还需要一个JAXP解析器。
JavaServer Faces (JSF) 是一个基于组件的,事件驱动的 Web 框架。这个框架很受欢迎。
Spring 与 JSF 集成的关键类是 DelegatingVariableResolver。
将 Spring 中间层与 JSF Web 层整合的最简单办法就是使用 DelegatingVariableResolver 类。
要在应用中配置变量解析器(Variable Resolver),你需要编辑 faces-context.xml 文件。
在 <faces-config/> 元素里面增加一个 <application/> 元素和一个 <variable-resolver/> 元素。
变量解析器的值将引用 Spring 的 DelegatingVariableResolver。
DelegatingVariableResolver 首先会将查询请求委派到 JSF 实现的 默认的解析器中,然后才是 Spring 的“business context” WebApplicationContext。
这使得在JSF 所管理的 bean 中使用依赖注射非常容易。
JSF 所管理的 bean 都定义在 faces-config.xml 文件中。
要集成Struts 与 Spring,有两个选择:
配置 Spring 将 Action 作为 bean 托管,使用 ContextLoaderPlugin, 并且在 Spring context中设置依赖关系。
继承 Spring 的 ActionSupport 类并且 使用getWebApplicationContext() 方法获取 Spring 管理的 bean。
Spring不仅支持传统(基于Servlet)的Web开发,也支持JSR-168 Portlet开发。
Portlet MVC框架尽可能多地采用Web MVC框架,使用相同的底层表现层抽象和整合技术。
Porlet工作流程和Servlet的主要差异在于,Portlet的请求处理有两个独特 的阶段:动作阶段和显示阶段。
动作阶段会有“后台”数据改变或动作的代码,这些代码 只会执行一次。
显示阶段会产生用户每次刷新时的看到的显示内容。
Servlet版本的MVC类将只 有一个方法来处理请求,而Portlet版本的MVC类里将会有两个方法:一个用在动作 阶段,另一个用在显示阶段。
比如,在Servlet版本的 AbstractController 有 handleRequestInternal(..)方法,
Portlet版本的 AbstractController有 handleActionRequestInternal(..)和 handleRenderRequestInternal(..)方法。
这个框架是围绕着分发器DispatcherPortlet设计的,分发器把请求转发给处理 器。
和Web框架的DispatcherServlet一样, 这个框架还有可配置的处理器映射和视图解析,同时也支持文件上传。
SWF使你能够把逻辑上的页面流转捕捉为自容纳的模块,并在不同的情形下被复用。
而这对于开发要引导用户完成受控的浏览动作,从而驱动业务流程的Web应用程序模块正是理想的。
分享到:
相关推荐
【整合XFire与Spring进行Web Service开发】 XFire是一个基于Java的SOAP Web Service框架,而Spring是一个广泛应用的轻量级框架,它提供了依赖注入、面向切面编程等特性。将两者集成可以方便地构建和消费Web Service...
通过以上介绍,我们可以看到Spring框架的强大之处在于其高度的灵活性、模块化设计以及对于现有技术的良好集成。无论是对于初学者还是资深开发者来说,Spring都提供了强大的工具和支持,帮助他们构建高效、可靠的Java...
1. 配置 Spring.NET 容器:通过配置文件(如 `App.config` 或 `Web.config`)定义对象及其依赖关系。 ```xml <sectionGroup name="spring"> <section name="context" type="Spring.Context.Support....
通过下载并研究"spring版本整理"压缩包中的文件,你可以深入了解不同版本的差异,从而选择最适合项目需求的版本。同时,对于初学者来说,这个压缩包提供了一个良好的起点,可以快速搭建SpringMVC环境,实践基础操作...
这个"参照阿里druid个人整理druid-spring-boot-starter可运行demo"是基于Spring Boot 2.x版本的,包含了Druid的基本配置和使用。为了构建一个完整的Druid配置,你需要以下几个步骤: 1. **依赖添加**:在`pom.xml`...
这个"spring5学习代码整理文件"包含了个人在学习Spring5过程中整理的各种代码示例,旨在帮助理解和掌握Spring5的关键概念和技术。 1. **依赖注入(DI)**:Spring5通过DI来解耦应用程序组件,使得组件之间不再硬...
依赖注入是 Spring 框架的核心特性之一,它使得对象之间的依赖关系不再硬编码,而是通过外部容器来管理。Spring 使用接口注入,构造器注入和 setter 注入三种方式实现 DI,帮助开发者减少代码的耦合度,提高可测试性...
- **AOP支持**:Spring的AOP特性用于实现如权限拦截、日志记录等功能。 - **辅助类库**:如JdbcTemplate、HibernateTemplate,简化了数据库操作。 - **框架集成**:Spring能很好地与Hibernate、JPA、Struts等框架...
本资料包“java_web jar包分类整理”正是针对这一主题,整理了多个关键领域的jar包,包括Spring、Hibernate、AOP和MySQL等。 1. **Spring框架**:Spring是一个全面的Java企业级应用开发框架,它提供了依赖注入(DI...
5. `org.springframework.web-3.0.5.RELEASE.jar`: 包含了Spring Web模块,提供与Servlet容器的交互,如HttpRequestHandler和ServletWrappers等。在Spring Security中,它支持Web安全配置,如过滤器注册和HTTP请求的...
Spring作为Java领域最流行的轻量级框架之一,它以其依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)理念,极大地简化了企业级应用的开发工作。 本手册以CHM(Compiled ...
在这个名为 "spring mvc需要用的jar完整整理" 的压缩包中,包含了一系列支持 Spring MVC 开发所需的 jar 包。下面将详细介绍这些 jar 包以及它们在 Spring MVC 应用中的作用。 1. **spring-webmvc.jar**:这是 ...
- **Web开发支持**:Spring MVC是构建Web应用的强大工具之一。 ### 二、Spring 4的主要特性 Spring 4作为Spring框架的一个重要版本,引入了多项增强特性和改进,具体包括: 1. **对Java 8的支持**:Spring 4全面...
书中可能还会涵盖如何处理错误、性能优化策略,以及与其他Web服务框架(如Spring WS)的集成等内容。 总之,理解Web服务的基本原理和掌握Apache Axis2框架是成为一名合格的Web服务开发者的关键。通过深入阅读提供的...
### Spring知识整理 #### 一、Spring框架简介与环境搭建 **Spring** 是一款轻量级的 Java 开发框架,其核心设计目标是为了使企业应用更容易配置和部署,同时简化了开发过程。Spring 可以集成几乎所有的 J2EE 流行...
`3 整理模板(spring+mybatis)` 文件可能是包含了一个完整的 Spring + MyBatis 项目模板,可能包括以下部分: - **配置文件**:如 `spring-context.xml`(Spring 配置)、`mybatis-config.xml`(MyBatis 配置)。 ...
Spring框架是Java开发中最常用的轻量级框架之一,它以其模块化、易用性和灵活性而闻名。本手册主要涵盖了Spring框架的两个主要版本——Spring 2.x和Spring 3.x,由FengGe精心整理,旨在帮助开发者快速查找和理解...
SSM(Spring、Struts、MyBatis)是Java Web开发中常见的三层架构组合,用于构建高效、灵活的Web应用程序。这个压缩包包含了这三个框架所需的JAR文件,为开发者提供了一个快速搭建SSM整合环境的基础。 **Spring框架*...
【Java+Web之高级应用源码整理】 在Java与Web开发的世界中,高级应用涉及到许多复杂的概念和技术。这个源码整理旨在提供一个深入学习和实践的平台,涵盖了许多关键领域,如Spring框架、MVC模式、数据库交互、安全...
- **控制反转(IoC)**:Spring框架的核心之一是其依赖注入(DI)机制,即Inversion of Control(IoC),这种设计模式帮助开发者更好地管理类之间的依赖关系,从而实现解耦。 - **面向切面编程(AOP)**:Spring还...