怎么做网站的登录界面,怎么做舞曲网站,wordpress会员积分,pinterest官网入口前言
Spring官网的MVC模块介绍#xff1a;
Spring Web MVC是基于Servlet API构建的原始Web框架#xff0c;从一开始就已包含在Spring框架中。正式名称“ Spring Web MVC”来自其源模块的名称#xff08;spring-webmvc#xff09;#xff0c;但它通常被称为“ Spring MVC…前言
Spring官网的MVC模块介绍
Spring Web MVC是基于Servlet API构建的原始Web框架从一开始就已包含在Spring框架中。正式名称“ Spring Web MVC”来自其源模块的名称spring-webmvc但它通常被称为“ Spring MVC”。
从Servlet到SpringMVC
最典型的MVC就是JSP servlet javabean的模式。
传统Servlet 弊端
xml下配置servlet的映射非常麻烦 开发效率低必须要继承父类、重写方法 侵入性强如果想在一个Servlet中处理同一业务模块的的功能分发给不同方法进行处理非常麻烦参数解析麻烦:单个参数转换类型---pojo对象 Json文本---pojo对象数据响应麻烦:pojo对象---json ... Content-type跳转页面麻烦, 对path的控制、 如果使用其他模板也很麻烦 、设置编码麻烦...等等...
所以SpringMVC 就是在Servlet的基础上进行了封装帮我把这些麻烦事都给我们做了。
Web框架的升级是一个不断偷懒的过程
从最开始的Servlet到现在的SpringMVC、SpringBoot等等
SpringMVC
基于xml的实现方式
1.给Servlet容器配置一个DispatcherServletweb.xml )
2.添加SpringMVC的配置信息
继承类/实现接口 方式 implements HttpRequestHandler 不同的HandlerMapping
!--通过设置属性的方式去设置映射路径--
bean classorg.springframework.web.servlet.handler.SimpleUrlHandlerMapping
property namemappingspropsprop keyhttpRequestsimpleController/prop/props
/property!--BeanNameUrlHandlerMapping 一定要为Controller设置一个有效映射地址的名字 如 Controller(/xxxx)--
注解方式
配置控制器Controller和处理方法的映射—RequstMapping 即可
其实SpringMVC请求原理很简单说白了就是用一个DispatcherServlet 封装了一个Servlet的调度中心 由调度中心帮我们调用我们的处理方法
在这个过程中调度中心委托给各个组件执行具体工作 比如帮我们映射方法请求、帮我解析参数、调用处理方法、响应数据和页面 等
这就相当于你在家自己做饭和去饭店吃饭的区别了 在家你买菜、洗菜、蒸饭、炒菜、洗碗都得自己来.
饭店都给你做好了 你只要分服务员说你吃什么、就能得到响应. 殊不知呢 你只是说了吃什么请求 后厨DispatcherServlet就有配菜员你给找到菜单-对应的食材映射 、切菜员切菜解析参数、 厨师给你炒菜调用处理方法、装盘处理返回值)、 抄完给你端出来响应
SpringMVC的具体执行流程
Spring MVC 是围绕前端控制器模式设计的其中中央 Servlet DispatcherServlet 为请求处理流程提供统一调度实际工作则交给可配置组件执行。这个模型是灵活的且开放的我们可以通过自己去定制这些组件从而进行定制自己的工作流。 DispatcherServlet 前端调度器 负责将请求拦截下来分发到各控制器方法中
HandlerMapping: 负责根据请求的URL和配置RequestMapping映射去匹配 匹配到会返回Handler具体控制器的方法
HandlerAdaper: 负责调用Handler-具体的方法- 返回视图的名字 Handler将它封装到ModelAndView(封装视图名request域的数据
ViewReslover: 根据ModelAndView里面的视图名地址去找到具体的jsp封装在View对象中
View进行视图渲染将jsp转换成html内容 --这是Servlet容器的事情了 最终response到的客户端 用户发送请求至前端控制器DispatcherServletDispatcherServlet收到请求调用处理器映射器HandlerMapping。 处理器映射器根据请求url找到具体的处理器生成处理器执行链HandlerExecutionChain(包括处理器对象和处理器拦截器)一并返回给DispatcherServlet。DispatcherServlet根据处理器Handler获取处理器适配器HandlerAdapter,执行HandlerAdapter处理一系列的操作如参数封装数据格式转换数据验证等操作执行处理器Handler(Controller也叫页面控制器)。 Handler执行完成返回ModelAndViewHandlerAdapter将Handler执行结果ModelAndView返回到DispatcherServletDispatcherServlet将ModelAndView传给ViewReslover视图解析器 ViewReslover解析后返回具体ViewDispatcherServlet对View进行渲染视图即将模型数据model填充至视图中。DispatcherServlet响应用户。
doDispatch
整个调用过程其实都在doDispatch中体现了
用户发送请求至前端控制器DispatcherServlet
由于它是个Servlet会先进入service方法——doGet/doPost——processRequestdoService——doDispatch ↓这个doDispatch非常重要--体现了整个请求流程
HandlerMapping
在整个过程中涉及到非常多的组件每个组件解析各个环节其中HandlerMapping最为重要它是用来映射请求的我们就着重介绍下HandlerMapping的解析过程和请求映射过程
附上流程图
RequestMapping原理| ProcessOn免费在线作图,在线流程图,在线思维导图