springmvc执行流程及原理(写出MVC的工作原理)

2025-03-27 10:30:02 0

springmvc执行流程及原理(写出MVC的工作原理)

本文目录

写出MVC的工作原理

1.当用户在浏览器中点击一个链接或者提交一个表单时,那么就会产生一个请求(request)。当请求离开浏览器时,它会携带用户请求的信息。

2.请求的第一站到达的是Spring的DispatcherServlet,它是一个前端控制器,工作是将用户的请求委托给其他的组件(这里是交给Spring MVC的控制器)去处理。

这里DispatcherServlet要决定将请求传给哪一个控制器(Controller)去处理,那么这时就需要处理器映射(Handler Mapping)了。

处理器映射会看请求的URL信息,然后决定将请求交给哪一个控制器去处理。比如说有两个控制器ControllerA和ControllerB,分别处理后缀名为.html和.jsp送来的请求,那么当请求者的后缀名为.html时,那么DispatcherServlet就将请求交给ControllerA进行处理。

C代表Controller,负责用户界面和业务逻辑层的通信控制,一方面解释来自用户界面的输入,识别用户动作(如点击按钮等),调用相应Model中的方法,另一方面处理来自Model的事件和返回的执行结果,调用适当的View显示给用户,Controller主要由Servlet完成。

M代表Model,负责整个解决方案的业务逻辑实现,底层的数据库也由Model访问和操作;

V代表View,负责系统向用户的展示,主要由HTML及JSP等完成;

拓展资料:

MVC组件说明:

以下组件通常使用框架提供实现:

DispatcherServlet:作为前端控制器,整个流程控制的中心,控制其它组件执行,统一调度,降低组件之间的耦合性,提高每个组件的扩展性。

HandlerMapping:通过扩展处理器映射器实现不同的映射方式,例如:配置文件方式,实现接口方式,注解方式等。 

HandlAdapter:通过扩展处理器适配器,支持更多类型的处理器。

ViewResolver:通过扩展视图解析器,支持更多类型的视图解析,例如:jsp、freemarker、pdf、excel等。

组件:1、前端控制器DispatcherServlet(不需要工程师开发),由框架提供作用:接收请求,响应结果,相当于转发器,中央处理器。有了dispatcherServlet减少了其它组件之间的耦合度。

用户请求到达前端控制器,它就相当于mvc模式中的c,dispatcherServlet是整个流程控制的中心,由它调用其它组件处理用户的请求,dispatcherServlet的存在降低了组件之间的耦合性。

2、处理器映射器HandlerMapping(不需要工程师开发),由框架提供作用:根据请求的url查找Handler

HandlerMapping负责根据用户请求找到Handler即处理器,springmvc提供了不同的映射器实现不同的映射方式,例如:配置文件方式,实现接口方式,注解方式等。

3、处理器适配器HandlerAdapter作用:按照特定规则(HandlerAdapter要求的规则)去执行Handler

通过HandlerAdapter对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理器进行执行。

4、处理器Handler(需要工程师开发)

注意:编写Handler时按照HandlerAdapter的要求去做,这样适配器才可以去正确执行HandlerHandler 是继DispatcherServlet前端控制器的后端控制器,在DispatcherServlet的控制下Handler对具体的用户请求进行处理。

由于Handler涉及到具体的用户业务请求,所以一般情况需要工程师根据业务需求开发Handler。

5、视图解析器View resolver(不需要工程师开发),由框架提供作用:进行视图解析,根据逻辑视图名解析成真正的视图(view)

View Resolver负责将处理结果生成View视图,View Resolver首先根据逻辑视图名解析成物理视图名即具体的页面地址,再生成View视图对象,最后对View进行渲染将处理结果通过页面展示给用户。

springmvc框架提供了很多的View视图类型,包括:jstlView、freemarkerView、pdfView等。

一般情况下需要通过页面标签或页面模版技术将模型数据通过页面展示给用户,需要由工程师根据业务需求开发具体的页面。

6、视图View(需要工程师开发jsp...)View是一个接口,实现类支持不同的View类型(jsp、freemarker、pdf...)

参考资料:百度百科-MVC

springMVC的原理及作用

Spring工作流程描述 1. 用户向服务器发送请求,请求被Spring 前端控制Servelt DispatcherServlet捕获; 2. DispatcherServlet对请求URL进行解析,得到请求资源标识符(URI)。然后根据该URI,调用HandlerMapping获得该Handler配置的所有相关的对象(包括Handler对象以及Handler对象对应的拦截器),最后以HandlerExecutionChain对象的形式返回; 3. DispatcherServlet 根据获得的Handler,选择一个合适的HandlerAdapter。(附注:如果成功获得HandlerAdapter后,此时将开始执行拦截器的preHandler(...)方法) 4. 提取Request中的模型数据,填充Handler入参,开始执行Handler(Controller)。 在填充Handler的入参过程中,根据你的配置,Spring将帮你做一些额外的工作: HttpMessageConveter: 将请求消息(如Json、xml等数据)转换成一个对象,将对象转换为指定的响应信息

springmvc执行流程及原理(写出MVC的工作原理)

本文编辑:admin

更多文章:


html源代码包括(程序员必须知道的HTML常用代码有哪些)

html源代码包括(程序员必须知道的HTML常用代码有哪些)

本文目录程序员必须知道的HTML常用代码有哪些HTML的标题的代码是什么HTML和源代码有什么区别他俩是什么关系程序员必须知道的HTML常用代码有哪些html+css代码文本设置1、font-size: 字号参数 2、font-style:

2025年3月17日 17:00

平安银行官网(平安银行积分兑换官网)

平安银行官网(平安银行积分兑换官网)

本文目录平安银行积分兑换官网怎样登录中国平安官方网站如何申请平安银行个人网上银行平安银行 登陆ip平安银行积分兑换官网平安信用卡积分商城可以兑换礼品或票券、充值话费及油卡以及使用积分+现金进行购物等,您可以登录平安口袋银行APP-信用卡-我

2025年3月14日 00:10

网页上不去是怎么回事?网站进不去,怎么办

网页上不去是怎么回事?网站进不去,怎么办

本文目录网页上不去是怎么回事网站进不去,怎么办为什么电脑有网络上不去电脑突然上不去网怎么处理手机网络正常 微信上不去 怎么办呢网页上不去是怎么回事一、网络自身问题 您想要连接的目标网站所在的服务器带宽不足或负载过大。处理办法很简单,请换个时

2025年3月28日 13:50

buy up(buy up 和 buying up 的区别)

buy up(buy up 和 buying up 的区别)

本文目录buy up 和 buying up 的区别pick up有哪几种意思(至少七个!)buy up 和 buying up 的区别这话不完整,前面应该还有,这个的区别只在语法上。词性不同在句子中的作用就不同,意思也就不同。make s

2025年3月27日 17:40

rs触发器和sr触发器的区别(rs触发器中的r和s分别代表什么意思呢)

rs触发器和sr触发器的区别(rs触发器中的r和s分别代表什么意思呢)

本文目录rs触发器中的r和s分别代表什么意思呢西门子plc中sr触发器有什么用STEP7两种触发器:RS触发器和SR触发器有什么区别,谢谢!rs触发器中的r和s分别代表什么意思呢R和S是R触发器的两个输入端,R通常称为置0端或复位端,S为置

2025年3月13日 01:20

对于企业类型的网站,什么样的ssl证书比较合适?做网站需要准备什么资料吗

对于企业类型的网站,什么样的ssl证书比较合适?做网站需要准备什么资料吗

本文目录对于企业类型的网站,什么样的ssl证书比较合适做网站需要准备什么资料吗简述企业网站类别有哪些,各有什么特点对于企业类型的网站,什么样的ssl证书比较合适对于企业网站,建议使用OV SSL证书或EV SSL证书。这两种证书不仅可以实现

2025年2月24日 14:10

安卓助手哪个好(手机双开助手哪个好)

安卓助手哪个好(手机双开助手哪个好)

本文目录手机双开助手哪个好推荐下啊,android手机助手哪个好用手机双开助手哪个好Android手机QQ、微信、游戏怎样实现双开多开呢?现在Android平台有很多好用的双开应用可以实现一部手机中多个个帐号同时在线。原理是在手机中虚拟一个

2025年3月11日 18:40

be associated with(be associated with 是什么意思的)

be associated with(be associated with 是什么意思的)

本文目录be associated with 是什么意思的be associated with 与 be associated to 的区别be associated with是什么意思be associated with和associat

2025年3月21日 00:40

ldap auth error(ldap auth error 什么玩意)

ldap auth error(ldap auth error 什么玩意)

本文目录ldap auth error 什么玩意连接小地球是出现ldap auth error 怎么解决ladpautherror怎么解决登录校园网时出现 ldap auth error ,之前登录都没有问题,今天突然就登不上去了出现lda

2025年2月14日 01:40

Div有什么属性?different怎么读

Div有什么属性?different怎么读

本文目录Div有什么属性different怎么读css设置div整体居中Div有什么属性Div的一些基本属性left 相对于窗口左边的位置 top 相对于窗口上边的位置 width DIV tag 的宽度。所有在 DIV 里的文字或html

2025年2月16日 13:30

回归模型公式(回归方程的公式和例题)

回归模型公式(回归方程的公式和例题)

本文目录回归方程的公式和例题回归分析法计算公式是什么随机模型回归线公式回归方程公式线性回归方程公式是什么回归方程的公式和例题y=bx+a回归分析regressionanalysis回归分析是处理多变量间相关关系的一种数学方法。相关关系不同于

2025年3月4日 15:10

网站代码加密(如何对网页代码进行混淆和加密)

网站代码加密(如何对网页代码进行混淆和加密)

本文目录如何对网页代码进行混淆和加密网页加密代码这种网页源代码是用的什么加密方式如何加密、解密如何给网页代码加密是对方无法查看源代码网页源码可以加密吗网站源代码有加密吗如何对网页代码进行混淆和加密方法一、一般来说利用程序来进行密码验证的方法

2025年2月18日 22:50

学html还是html5(自学HTML5能成为HTML5工程师吗)

学html还是html5(自学HTML5能成为HTML5工程师吗)

本文目录自学HTML5能成为HTML5工程师吗现在java后端、h5前端、python哪个更值得学自学HTML5能成为HTML5工程师吗首先,靠自学编程语言,是可以成为相应开发语言工程师的,不管是C、C++、Python、Java,或是HT

2025年4月4日 01:50

or的中文是什么?border和boundary解释为边时有什么区别

or的中文是什么?border和boundary解释为边时有什么区别

本文目录or的中文是什么border和boundary解释为边时有什么区别外贸中门到门(door to door)的专业术语是什么or的中文是什么  conj.  1.或,或者  2.(用于否定句,提出两种或多种事物时)也不  3.(用于警

2025年3月28日 21:30

java从入门到精通txt(求Java从入门到精通的pdf啊找了好久找不到完整版的)

java从入门到精通txt(求Java从入门到精通的pdf啊找了好久找不到完整版的)

本文目录求Java从入门到精通的pdf啊找了好久找不到完整版的哪里有《java从入门到精通》随书光盘下载求Java从入门到精通的pdf啊找了好久找不到完整版的哪里有《java从入门到精通》随书光盘下载迅雷上有,这是下载地址:http://5

2025年3月17日 12:40

c语言标识符有哪些(C语言的32个标识符是那32 个啊有专业人士能列举全部吗)

c语言标识符有哪些(C语言的32个标识符是那32 个啊有专业人士能列举全部吗)

本文目录C语言的32个标识符是那32 个啊有专业人士能列举全部吗C语言中类型标识符有哪些C语言的32个标识符是那32 个啊有专业人士能列举全部吗你的说法不对,应该指的是具有特定意义的标识符吧,也就是关键字(保留字)如下:auto,break

2025年2月13日 02:20

considerable翻译(急,有语法错误吗Do you know how considerable you are )

considerable翻译(急,有语法错误吗Do you know how considerable you are )

本文目录急,有语法错误吗Do you know how considerable you are you are considerable是什么意思翻译英文,不要机器翻译的英语considerable distress怎么翻译急,有语法错误

2025年2月21日 08:40

文本分析研究方法(文本分析法是什么啊)

文本分析研究方法(文本分析法是什么啊)

本文目录文本分析法是什么啊政策文本分析法是研究方法吗观察法和文本分析法的区别小学语文文本分析包括哪些方面文本分析法是什么啊内容分析法(Content analysis),又称为文本分析(textual analysis)。运用于18世纪的瑞

2025年4月3日 08:30

免费服务器地址(哪里有免费的服务器可以领)

免费服务器地址(哪里有免费的服务器可以领)

本文目录哪里有免费的服务器可以领干货教程 | 如何把服务器免费接入IPv6哪里有免费的服务器可以领去小鸟云呀~他们有拼团0元的活动~以下是活动规则,你可以参考下:1、根据你所需的服务器配置,选择拼团购买(1H1G2M、2H2G5M、4H4G

2025年3月12日 20:50

ridiculous什么意思(ridiculous什么意思)

ridiculous什么意思(ridiculous什么意思)

本文目录ridiculous什么意思ridiculous丶什么意思absurb 与ridiculous的区别ridiculous是什么意思ridiculous什么意思ridiculous 英 adj. 1.可笑的,荒谬的,愚蠢的,荒唐

2025年3月5日 09:40

近期文章

journal of alloys and compounds(Journal of Alloys and Compounds投稿求助)
2025-04-05 08:40:02
本站热文

harbor,port,pier的区别?谁能解释“harbour“(港口)与“pier“(码头)的区别
2025-02-22 17:40:03 浏览:18
ibatis foreach(ibatis 批量update操作)
2025-02-10 23:40:06 浏览:7
endless rain(endless rain表达什么情感)
2025-02-14 06:00:02 浏览:6
标签列表

热门搜索