翻译:Spring-Framework-Reference Document:15.2-DispatcherServlet
写在前面的话:
最近被项目的代码折腾的死去活来的,其实框架也没有那么难理解,只是自己的Web基础太差,被Request和Response这一对神雕侠侣坑到泪流满面!今天捣腾了一下Spring
Web
MVC,本来想用JSTL的自定义标签开发或者Strust2的框架,但发现框架堆的太多太乱不利于开发效率,所以决定还是先采用Spring
Web
MVC的设计模式来试一试。然后,在网上搜了很多资料之后,我发现,大家基本上都是转发+贴代码,可以学习的东西实在是少之又少,在调试了一天别人的代码
之后,我决定直接去看Spring-Framework的官方文档:spring-framework-reference。由于这份文档目前还没有找到
中文版的,所以我把一些重要的内容按章节翻译下来,一方面留给自己当作参考资料,另一方面也是希望能帮助到想要学习Spring
framework的人。
PS:英语水平不是很高,部分内容翻译不流畅,希望见谅,如有错误,麻烦留言指正,不胜感激。
和许多其他Web MVC框架一样,Spring Web
MVC是由request驱动,以servlet为中心设计的,而这个中心servlet能够将request分发到不同的控制器
(controllers),然后提供其他的能够用来开发Webapplication的功能模块。然而,Spring的DispatcherServlet能够做的更多,它能够完全和Spring
IoC容器结合,并且能够允许开发人员使用Spring容器中所有的要素;
Request处理Spring Web
MVC工作流的时候,DispatcherServlet所发挥的作用在下面的图中一览无余:
一些精通模式的读者会马上意识到,DispatcherServlet就是“前端控制器”(这是一种Spring Web MVC与其他先进的Web框架所共有的模式)设计模式的一种表达。
DispatcherServlet
本质上就是一个Servlet(继承了HttpServlet基类),在你的Web应用中使用它的时候,要在Web.xml中声明。同样的,你需要在
Web.xml中利用URL映射的方式,将那些你想要交给DispatcherServlet处理的requests进行映射。下面是一个标准的J2EE
Servlet配置:
在一些处理例子中,所有的以.form结束的requests将会被交给上述所声明DispatcherServlet处理。这仅仅是搭建Spring
Web MVC的第一步。你现在需要配置那些在Spring Web
MVC框架中所使用到的各种beans(也包括DispatcherServlet自己)。
在3.13部分,详细讲述了关于添加可用的ApplicationContext的内容,在Web MVC
框架中,每一个DispatcherServlet都有自己的WebApplication-Context,从已经被定义的根应用上下文中继承所有的
beans,这些被继承的beans能够在特定的Servlet范围内被覆盖,开发者也可以给一个给定的Servlet实例定义新的特定范围的
beans。
在初始化DispatcherServlet的基础上,Spring Web
MVC框架开始在你的Web应用WEB-INF的路径下寻找一个叫做[servlet-name]-servlet.xml的文件,然后以重新定义那些已
经以相同的名称在全局范围内定义的任何一个beans的方式创建这些已经在这个xml中被定义的beans。
思考下面的DispatcherServlet声明配置:
在拥有上述的Servlet配置文件之后,你需要在你的应用里创建一个/WEB-INF/golfing-servlet.xml的文件,这个文件将会包
含你的所有Spring Web MVC组件(beans),你能够通过一个servlet初始化参数去更改这个beans的配置文件的绝对路径。
这个WebApplicationContext是从一个拥有一些Web
application的额外必备要素的基本应用上下文ApplicationContext拓展来的。这个Web应用上下文和普通的
ApplicationContext在解决方案的可用性上有些不同。并且能够知道这个Web 应用上下文归属于哪一个Servle。这些WebApplicationContext封装在ServletContext中的,通过使用RequestContextUtils类中的静态方法,你就能够在你需要使用它的时候立马找到这个WebApplicationContext。
Spring中的DispatcherServlet用特殊的beans处理request,并且用合适的视图表现。这些beans是Spring框架中的一部分。你能够在WebApplicationContext中配置它们,就如同你配置其他的bean一样。然而,对于大多数beans来说,敏感的默认行为能够为你提供,因此并不需要你去配置它们。
关于这些beans的描述如下表:
(简单介绍一下:
Handler mappings:操作执行一系列的预处理、后续处理,当得到匹配的参数之后,就执行控制器;
View resolvers:将视图名称解析给视图;
Locale resolver:是一种为了提供国际化视图而对客户端使用的环境场所解析;
Theme resolver:能够解析你的Web 应用使用的主题,举个例子:提供个性化的布局;
Multipart file resolver:包括了能够处理HTML表单上的下载文档;
Handler exception resolvers:映射视图的异常或者实现其他更多更复杂的异常处理代码;
在你建立DispatcherServlet之后,一个请求进入了一个特定的DispatcherServlet,这个DispatcherServlet开始如下面的的过程一样处理这个请求:
1、
WebApplicationContext搜索并且将这个request封装成一个属性,这样控制器和这个过程中的其他元素就能够使用了。这样的封装默
认是由Key—DispatcherServlet.WEB_APPLICATION_CONTEXT_ATTRIBUTE执行的。
2、Locale resolve通过封装请求是为了让解析场所所使用的元素变为可用。这是过程中的可选项。
3、(很简单自己看,翻累了)The theme resolver is bound to the request to
let elements such as views determine which theme to use. If you do
not use themes, you can ignore it.
4、寻找一个合适的Handler,如果这个Handler被找到了,和这个Handler所关联的处理链开始执行,并准备返回一个model或者View。
5、如果返回的是Model,视图就表现出来。如果返回的不是model(也许是因为预处理器或者后续处理拦截了这个请求,也许是因为安全原因),没有视图表现出来,因为request已经被完成了。
翻译:Spring-Framework-Reference Document:15.2-DispatcherServlet的更多相关文章
- Spring Framework Reference,Documentation,spring英文文档.pdf 官方文档
直接上链接:http://files.cnblogs.com/files/kongkaikai/spring-framework-reference.pdf 官网链接:http://docs.spri ...
- Spring Framework 4.3.22.RELEASE Reference文档目录
<Spring Framework Reference Documentation 4.3.22.RELEASE> https://docs.spring.io/spring/docs/4 ...
- Spring Boot Reference Guide
Spring Boot Reference Guide Authors Phillip Webb, Dave Syer, Josh Long, Stéphane Nicoll, Rob Winch, ...
- Spring系列(零) Spring Framework 文档中文翻译
Spring 框架文档(核心篇1和2) Version 5.1.3.RELEASE 最新的, 更新的笔记, 支持的版本和其他主题,独立的发布版本等, 是在Github Wiki 项目维护的. 总览 历 ...
- Spring Framework 5.0.0.M3中文文档 翻译记录 Part I. Spring框架概览1-2.2
Part I. Spring框架概览 The Spring Framework is a lightweight solution and a potential one-stop-shop for ...
- Spring Framework------>version4.3.5.RELAESE----->Reference Documentation学习心得----->关于spring framework中的beans
Spring framework中的beans 1.概述 bean其实就是各个类实例化后的对象,即objects spring framework的IOC容器所管理的基本单元就是bean spring ...
- Spring Framework 学习笔记——核心技术之Spring IOC
Spring Framework 官网文档学习笔记--核心技术之Spring IOC 官方文档 spring-framework-5.3.9 1. Spring Framework 核心技术 1.1 ...
- Hello Spring Framework——依赖注入(DI)与控制翻转(IoC)
又到年关了,还有几天就是春节.趁最后还有些时间,复习一下Spring的官方文档. 写在前面的话: Spring是我首次开始尝试通过官方文档来学习的框架(以前学习Struts和Hibernate都大多是 ...
- Learn Spring Framework(continue update...)
Part I. Overview of Spring Framework The Spring Framework is a lightweight(轻量级的) solution and a pote ...
随机推荐
- 动画基础--基于Core Animation(1)
1.简介 上一篇文章[New learn]动画-基于UIView了解到了一些直接由UIView这个在UIKIT提供的类中提供的一些动画方法. 使用UIView的动画特性已经能够满足我们很多的需求,它是 ...
- IE11中实现颜色渐变
background: -ms-linear-gradient(left,#daa23e,#ad7f27); 下面是css3中颜色渐变对各个浏览器的写法:background: -webkit-lin ...
- Leetcode 之Evaluate Reverse Polish Notation(41)
很简单的一道题,定义一个栈保留操作数,遇操作符则弹出运算即可. bool isOperator(string &op) { //注意用法 && string("+-* ...
- POJ - 2478
Farey Sequence Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 12802 Accepted: 4998 D ...
- 【JBPM4】State 节点
State状态节点 相比 Task 节点的区别为: 主要是没有“操作人员”assignee 流程操作方便基本相同.如下: 部署流程: repositoryService.createDeploymen ...
- Web测试中容易被忽略的Charset问题
今天继续进行一个更综合的脚本制作,录制设置.进行录制.脚本修改,一切都轻车熟路,进行得很顺利.经过近一个小时的对比和修改,OK,脚本大功告成,终于可以小试牛刀了,嘿嘿. 运行,replay lo ...
- 自建yum源(只演示nginx服务,其它都一样)
(1)概述 (2)yum server端配置 1)关闭防火墙和selinux systemctl stop firewalld systemctl disable firewalld sed -ri ...
- i redis-desktop-manager 安装
进入 https://redisdesktop.com/download https://github.com/uglide/RedisDesktopManager/releases 选择ubuntu ...
- 微信JSSDK分享功能实现
<script src="http://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script> <scri ...
- HDU 2089 不要62【数位DP入门题】
不要62 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...