继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

【金秋打卡】第19天 Spring Boot打造企业微信点餐系统 2

杀入互联网江湖
关注TA
已关注
手记 58
粉丝 4
获赞 1

第一模块:

课程名称: Spring Boot打造企业微信点餐系统

章节名称:3-1 ~ 4-3

讲师姓名:廖师兄


第二模块:

内容概述:

3-1 ~ 4-3小节讲解了开发环境的搭建、日志、DAO类


第三模块:

学习心得:

1.使用IDEA创建一个springBoot工程

注意:springBoot出来之后,除了传统的spring MVC 和spring,现在说的spring MVC 和spring都是基于springBoot下的

Spring MVC 开发的核心是其流程组件,因此在很多情况下,面试官的第一个关于 Spring MVC 的问题便是 Spring MVC 的执行流程和组件是咋样的?

Spring MVC 全流程:

http://img3.sycdn.imooc.com/6373a3070001fa9011280714.jpgspacer.gif


关键单词的翻译:

DispatcherServlet:程序调度服务

HandlerMapping:处理器映射

HandlerExecutionChain:处理器执行链

HandlerAdapter:处理器适配器

ModelAndView:模型视图

ViewResolver:视图解析器

View:视图

解析:

这里的流程和组件是需要探索的内容,从图中可以看到 Spring MVC 的流程是围绕着 DispatcherServlet 而工作的,所以它是最重要的一个类。在 Spring MVC 中首先请求会被 DispatcherServlet 拦截,然后就按照一定的流程进行处理,下面先来简述它的全流程:   

  • HandlerMapping 的主要的功能是路由,也就是通过它去确定使用哪个控制器去响应请求,这样通过它就可以返回一个执行链(HandlerExecutionChain)。这个执行链包含两个东西一个是拦截器链,另外一个是处理器(Handler)。但是这里的处理器和控制器还是有区别的,处理器会将我们开发的控制器进行包装,所以可以增强控制器的功能。通过这样就能够确定请求最终路由到那个控制器上,而通过拦截器和处理器,就可以增强控制器的功能了;

  • 通过上一步就能找到处理器,那么紧跟着就要去运行它了。为了运行它,Spring MVC 提供了 HandlerAdapter 组件来运行处理器,之前我们谈过处理器会对控制器包装,所以这一步往往会连同控制器的逻辑也会一并运行;

  • 在运行控制器的过程中,核心的内容就是获取数据,并且将数据进行封装到数据模型中,为的是将来视图(View)可以将数据渲染出来。而在 Spring MVC 中提供视图设置和数据模型封装的是 ModelAndView。

  • 有了 ModelAndView 后,跟着就需要进行考虑将数据渲染到视图中,从而展现给用户查看。不过在此之前可能需要定位视图,什么意思呢?有时候我们的视图会很复杂,比如 JSP,Thymeleaf 等,要求我们直接创建对象存放到 ModelAndView 会很困难,为此 Spring MVC 允许我们返回一个逻辑视图名称,而这个逻辑视图名称会包含实际视图的定位信息。逻辑视图名称要找到实际视图则需要使用视图解析器(ViewResolver)。但是这一步不是必须的,也可以直接在 ModelAndView 上直接设置 JSON 视图,这样就不需要视图解析器定位了。

  • 经过上述步骤,就剩下视图和数据模型了,这样 Spring  MVC 就可以直接将数据模型中的数据渲染到视图中,这样就可以完成所有步骤了。

但是请大家注意的是上述只是阐述全流程,并未阐述一些细节,比如处理器的运行细节和拦截器;而且并非所有的 Spring MVC 请求都需要会经历全流程的处理,比如对于一些简单的视图比如 JSON 视图,并不需要视图解析器(ViewResolver)进行定位。

04实践篇1:深入Spring MVC 全流程开发细节

controller层的常用注解:

@Controller

@RequestMapping(value="/index", method = RequestMethod.GET)      @RequestMapping来配置HandlerMapping

Http的请求方法:

POST、PUT、PATCH、DELETE 、GET

@GetMapping:拦截 HTTP 方法为 GET 的请求,这里 GET 请求主要是查看资源

@PostMapping:拦截 HTTP 方法为 POST 的请求,这里的 POST 请求主要是新增资源使用

@PutMapping:拦截 HTTP 方法为 PUT 的请求,这里的 PUT 请求主要是修改资源(对于修改资源的我们一律都使用 @PutMapping)

@DeleteMapping:拦截 HTTP 方法为 DELETE 的请求,这里的 DELETE 请求主要是删除资源

注解之间的等效替换eg:

@RequestMapping(value="/index", method = RequestMethod.GET)

等价于

@GetMapping("/index")

等效替换存在的原因:spring框架在不断更新,更加简洁的注解出现,取代之前老的注解

实例解析spring MVC 工作流细节:

控制器代码:

spacer.gifhttp://img4.sycdn.imooc.com/6373a3320001430706660465.jpg


视图代码:

spacer.gifhttp://img3.sycdn.imooc.com/6373a3390001f0b007060347.jpg


修改spring MVC工程的启动类:这里主要是配置 @SpringBootApplication 的 scanBasePackages 属性,这样才能将我们开发的控制器扫描进来

spacer.gifhttp://img1.sycdn.imooc.com/6373a3400001dbe307090327.jpg


浏览器窗口访问:

spacer.gifhttp://img1.sycdn.imooc.com/6373a34500013aeb06280211.jpg


上面这些代码的spring MVC工作流

spacer.gifhttp://img2.sycdn.imooc.com/6373a34c00015eca08020568.jpg


关键单词翻译:

DispatcherServlet:程序调度服务

HandlerMapping:处理器映射

HandlerExecutionChain:处理器执行链

HandlerAdapter:处理器适配器

ModelAndView:模型视图

ViewResolver:视图解析器

View:视图

上面流程的注意点:

1.通过 HandlerMapping 机制只是找到处理器,而不是控制器,而处理器对控制器加了一层包装,所以它能够增强控制器的功能

2.方法的参数为 Model,这是一个数据模型参数,它是通过处理器的包装来创建的并不需要我们处理,所以就可以拿来就用

3.这里的 "index" 是一个视图的逻辑名称,依据 Spring MVC 的流程它会被视图解析器(ViewResolver)所解析,从而定位真实视图,在 Thymeleaf 中具体的视图解析器是类 ThymeleafViewResolver,在 Spring Boot 中默认的实际视图放置的位置 是 /resources/templates 文件夹,所以我们只要将对应的 Thymeleaf 放置到这个目录即可,当控制器返回了 "index",通过视图解析器(ThymeleafViewResolver)就会来到 /resources/templates 文件夹查找名字为 index 而后缀为.html 的文件作为视图,显然就能找到我们开发的视图了,然后将数据模型的数据渲染到这个视图里

当今,视图渲染的两种方式:

1.数据直接在视图渲染,后台返回视图

2. Ajax 异步获取JSON数据包,前台经行页面渲染(最常用)


第四模块:

学习截图:

http://img2.sycdn.imooc.com/6373a27500017c2907760379.jpg

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP