clickonce不支持请求执行级别_SSM框架的执行流程

9f76a13e6d11641698b786bbb5539949.png

这是一篇SSM框架使用级别的文章,我认为本文应该作为Java开发者应聘面试之前的必会内容!且听我慢慢叙述。


SSM框架是Spring框架、SringMVC框架以及MyBatis的总称,是目前业界比较常用的Java企业级应用开发框架之一。因此,哪怕是对于外包项目的同学,对SSM框架的熟练使用也是一项必不可少的技能。为此,在面试中经常会有这样的一道题:

假设有一个使用SSM框架开发的Web程序,请以一次请求为例,描述一下其处理流程?

回答这个问题要从MVC模式谈起。MVC是Model–View–Controller的简称,下面是维基百科对MVC的解释:

MVC is an architectural pattern commonly used for developing user interfaces that divides an application into three interconnected parts.

MVC是一种架构模式,通常被用来开发用户接口以便将一个应用划分成三个互相关联的部分。

Model:The central component of the pattern. It is the application's dynamic data structure, independent of the user interface.

Model是MVC的核心组件,它是应用的动态数据结构,独立于接口而存在。

View:Any representation of information such as a chart, diagram or table.

View是任何信息的格式,比如图表、图片、表格。

Controller:Accepts input and converts it to commands for the model or view

Controller接受用户的输入并把它转换为对于Model或者view的命令。

1c24f53f2eadc83908890fd7b0fe95d4.png
图片来自维基百科

了解了MVC模式,再谈SpringMVC会容易很多。下面是官网对SpringMVC的解释:

Spring MVC, as many other web frameworks, is designed around the front controller pattern where a central Servlet, the DispatcherServlet, provides a shared algorithm for request processing, while actual work is performed by configurable delegate components.

SpringMVC像许多其他的Web框架一样,是围绕着一个前端控制器来设计的,这个前端控制器叫做DispatcherServlet。前端控制器提供了一个处理请求的算法,而实际的处理工作由其委托的组件完成。

正如文档描述的,SpringMVC实际上使用的是MVC2模式设计的。MVC2模式就是将MVC模式中的控制器细化成一个前端控制器和很多个委托的组件(也做后端控制器)。其中,前端控制器专心致志的接受用户请求,并将请求根据其特征(比如url,method等)转发给后端控制器。而后端控制器实际上就是我们在开发中写的一个个的Controller。

那么前端控制器匹配后端控制器的过程在哪里定义呢?文档是这样说的:

The DispatcherServlet, as any Servlet, needs to be declared and mapped according to the Servlet specification by using Java configuration or in web.xml. In turn, the DispatcherServlet uses Spring configuration to discover the delegate components it needs for request mapping, view resolution, exception handling, and more.

DispatcherServlet像其他任何Servlet一样,需要根据规范在Java应用或者web.xml中进行声明和映射。相应的,DispatcherServlet使用Spring配置来发现它需要用来处理请求映射、视图解析以及异常处理的组件。

7597c736cbe9faef625b716cc5400c14.png
图片来自SpringMVC官网

从上图中可见,一个请求首先被DispatcherServlet(前端控制器)接收,然后其根据HandlerMapping中的配置找到用来处理本次请求的Controller(后端控制器),接着就是执行相应Controller中的代码。接着请求就来到了Root WebApplicationContext中,Root WebApplication说白了就是程序中Service Bean等组件的运行环境。

根据“阿里巴巴Java开发手册终极版v1.3.0”手册中第六章第一节的介绍,一个设计良好的工程结构应该如下图。即,当请求执行到后端控制器(位于Web层)之后,后端控制器会继续调用Service层中的业务代码,而Service层继续向后调用Manager层或者DAO层,进而获得目标数据。Service层将获得到的目标数据返回给后端控制器。后端控制器把目标数据包装成Model之后返回给ViewResolver,ViewResolver把Model渲染成最终用户看到的页面。接着,用户就看到了他眼前屏幕上的网页。瞧!短短十几毫秒的时间竟然发生了这么多事,程序员是不是很牛逼(傲娇脸)!

5a9f4fbc66c7bc0a9752fd381eb10872.png
图片来自阿里巴巴开发手册

本文从MVC模式入手,详细的介绍了一次Web请求在SSM框架中的工作流程。下次面试的时候,你能给面试官将清楚了吗?@E-臻。

一个介绍Java学习路线的Live:(已有3000+人收听,5200+人支持)

学习Java,我建议这样做​www.zhihu.com​www.zhihu.com
9bd5038053633ee75c26f8ce0ae71961.png

一个介绍入门云计算的Live:(通俗易懂的云计算知识,怎么可以不了解?)

入门云计算:你该了解的那些事儿​www.zhihu.com
9bd5038053633ee75c26f8ce0ae71961.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值