`
gao_20022002
  • 浏览: 160285 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Spring整理记录之WEB

阅读更多

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应用程序模块正是理想的。

分享到:
评论

相关推荐

    eclispe文件整理插件

    eclispe在线安装插件,用于整理文件。暂时只支持一般web项目和maven项目,spring boot项目不支持。快捷键Ctrl+6和Ctrl+8.Ctrl+6用来创建文件件;Ctrl+8用来记录路径和整理文件

    java8源码-FiveYears:学习/总结/成长/记录

    学习/总结/成长/记录(2018.2.28 - 2023.2.28) :heart_suit:Java 基础 锁 - 未学习 JVM - 待整理 容器 多线程 集合(底层源码) ArrayList LinkedList Vector HashMap ComcurrentHashMap LinkedHashMap Set IO 集合 ...

    Java学习笔记-个人整理的

    \contentsline {chapter}{Contents}{2}{section*.1} {1}Java基础}{17}{chapter.1} {1.1}基本语法}{17}{section.1.1} {1.2}数字表达方式}{17}{... {16}Web基础}{215}{chapter.16} {16.1}HTML}{215}{section.16.1} {...

    【白雪红叶】JAVA学习技术栈梳理思维导图.xmind

    Spring WebFlow spring tx aop ioc Struts ibatis Mybatis CAS Dubbo 工作能力 软实力 应急能力 创新能力 管理能力 分享能力 学习能力 沟通能力 解决问题能力 经历 技术攻关案例 程序开发案例 ...

    SpringBoot项目师生健康信息管理系统.zip

    系统的核心功能包括健康数据记录、疾病预防资讯发布、健康数据分析、疫苗接种记录以及个人健康报告生成等。用户(包括学生和教职工)可以通过系统上报自己的健康状况,系统会自动整理和分析这些数据,帮助学校管理层...

    java8集合源码分析-Notes:笔记

    Spring必备(---Spring、SpringMVC、SpirngBoot初步教程整理完毕。---) SpringCloud(---SpringCloud整体介绍。---) SpringBoot整合篇(整合Redis、RocketMQ、定时任务等,后续补充。) 数据库、Linux(---后续补充---)...

    整理后java开发全套达内学习笔记(含练习)

    日志,记录 [lɒg] native (关键字) ?? ['neitiv] nested [java] 嵌套的 ['nestid] '如:内部类(nested classes) Object [java] 对象 ['ɒbdʒekt] Overload [java] 方法的重载(不同参数列表的同名方法) [,әuvә...

    asp.net知识库

    Asp.net 2.0功能体验,细节之Web控件(一) 隐藏控件 Asp.net 2.0功能体验,总体设计思想 Asp.net 2.0 WebPart使用经验点滴 革新:.NET 2.0的自定义配置文件体系初探 关于如何在ASP.NET 2.0中定制Expression ...

    Java-CS-Record:记录准备春招实习过程中,学习与复习的知识(模块化整理,非面试题速成)。注:已拿阿里 offer,暂停更新!

    每次会把一个技术点整理完才进行更新,很多技术体系太庞大,比如某些框架源码,我会只挑选关键部分整理。同步更新,现放到 Github 有如下原因博客是平铺式结构,无法按照目录式结构保存,并且博客内容较杂,这里只...

    Java项目:少年宫活动中心后台管理系统(java+SpringBoot+Thymeleaf+Redis+maven+mysql

    * 少年儿童活动中心老师:通过web管理平台进行课程安排、调课退课、选课数据整理及历史数据维护等工作。具备基本计算机使用水平。 * 少年儿童活动中心制定的其他用户:活动中心根据自身的业务需要,指定的其他用户...

    JAVA核心知识点整理(有效)

    标记整理算法(Mark-Compact).................................................................................................. 28 分代收集算法 ..............................................................

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    在web 2.0应用中,博客(Blog)是web 2.0核心应用中最典型、最流行的代表之一,也是web 2.0技术应用的最直观的表现,是web 2.0精神和理念的具体体现。 1.2. 问题的提出 Blog记载了日常发生的事情和自己的兴趣爱好,把...

    积分管理系统java源码-mystyle:我的风格

    工作中的积累,搭建的j2ee应用快速开发手架,重点在代码重构,一些常用功能的演示,工具,插件等的整理 ##功能要点简介 以springmvc、sprng、hibernate为基础框架搭建java web快速开发手架.ps:(参考,) mysql数据库 ...

    基于J2EE框架的个人博客系统项目毕业设计论...

    在web 2.0应用中,博客(Blog)是web 2.0核心应用中最典型、最流行的代表之一,也是web 2.0技术应用的最直观的表现,是web 2.0精神和理念的具体体现。 1.2. 问题的提出 Blog记载了日常发生的事情和自己的兴趣爱好,把...

Global site tag (gtag.js) - Google Analytics