背景剖析
当我的项目做的越来越来大时,我的项目中业务就会变得越来越简单,如果咱们只应用一个对象去解决
所有的业务,这个对象的复杂度就会更高并且难以保护,生存中和理论我的项目中对相似问题的解
决计划往往"分而治之"的思维.来升高业务复杂度,进步其可维护性.那当初的问题的是如何分,
依照什么规定去分,这就须要有肯定的设计,于是MVC设计思维诞生.
MVC 是什么?
1)分层设计思维
2)一种套路或设计模式
3)是Model,View,Controller单词的缩写
3.1)Model (业务逻辑对象)
3.2)Controller(管制逻辑对象)
3.3)View(显示逻辑对象)
Spring 框架中Web模块中的MVC设计
Spring中的Web模块基于MVC设计思维做了落地实现,其外围组件有:
1)DispatcherServlet (Spring MVC中外围控制器-Controller)
2)RequestMapping (封装的申请映射->url到具体handler及办法之间的映射)
3)Handler(申请处理器->负责解决Controller获取申请->能够将其了解为model)
4)ModelAndView (封装了业务数据和视图信息的对象)
5)ViewResolver (负责模板视图解析的对象->View)
SpringBoot工程中Web MVC 疾速入门实现
1)创立我的项目module
2)增加我的项目依赖(spring web,thymeleaf)
3) 我的项目构造剖析(static,templates)
4) 我的项目启动剖析(启动运行启动类,检测服务是否启动ok)
5) 批改我的项目端口,重新启动剖析
6)别离在static和templates目录中创立html页面而后进行拜访测试
6.1)在static目录下间接创立index.html,启动服务后间接浏览器拜访测试,测试ok.
6.2)在templates目录下创立default.html,启动服务后间接浏览器拜访测试,404异样
6.3)在我的项目中定义TemplateController以及相干办法,在办法外部返回字符串default(
能够将这个字符串了解为view的名字),而后启动服务,基于办法上定义的申请url映射
(@RequestMapping("/doTemplateUI"))拜访办法,检测测试输入。
templates目录存储什么文件(html模板文件)
templates目录的html页面能够在浏览器间接拜访吗?不能够
static目录下个别能够放什么资源?(html/css/js/images)
templates目录和static目录下寄存的html文件有什么不同吗?
static目录下的html能够间接在浏览器拜访但不能被spring中视图解析器进行解析
templates目录的html页面不能够在浏览器间接拜访但能够被spring的视图解析器进行解析,
从而为html赋予更多的能力(例如thymeleaf表达式,分支语句,循环语句,...)
thymeleaf是什么?(是一个以html作为模板的模板引擎,此引擎为html元素增加
额定属性并进行解析,而后对其进行赋能。springboot工程中对thymeleaf做了默认的反对
与配置)
Bug?
1)404异样(web申请资源不存在)
2)TemplateInputException (template may not exists)
5.SpringBoot工程中Web MVC利用配置进阶
1)SpringBoot工程中thymeleaf模板引擎的前后缀配置
2)SpringBoot工程中页面主动刷新配置(批改页面内容后,不重启服务既可看到更新内容)
1)ModelAndView是什么? (Spring MVC模块中默认提供一个封装响应数据的对象)
2)ModelAndView个别利用在什么场景呢?(响应数据既蕴含view又蕴含model)
3)你是如何了解JSON的?(就是一种反对跨端需要的轻量级数据格式而已)
4)SpringBoot工程中默认是如何将pojo,map等相似对象转换为json格局字符串的?(借助jackson)
5)@ReponseBody注解的作用是什么?(形容Handler中的办法,用于通知底层应该如何对办法的
返回值进行解决,例如此注解形容的办法,其返回值必定不是view,同时通知底层办法返回值的转换
后果最终要写到响应体,而后传输到客户端)
6)@RestController注解的作用的是什么?(形容Handler类型,用于定义此类是一个Controller
申请解决对象,同时类中所有办法都默认增加@ResponseBody注解)