1. mvc介绍
MVC是模型(Model),视图(View),控制器(Controller)的简写 。它是一种软件的设计规范 ,其中:
- Model(模型)
数据模型,提供要展示的数据,因此包含数据和行为,可以认为是领域模型或者JavaBean的组件(包含数据和行为),不过现在一般都分离开来:Value Object(数据Dao) 和服务层(Service),也就是模型提供了模型数据查询和模型数据的状态更新等功能,包括数据和业务。 - View(视图)
负责进行模型的展示,一般就是我们见到的用户界面,客户想要看到的东西。 - Controller(控制器)
接受用户的请求,委托给模型进行处理(状态改变),处理完毕后把返回的数据返回给视图,由视图负责展示,也就是说控制器做了个调度员的工作。
Mvc有以下作用: - 是将业务逻辑,数据,显示分离的方式来组织代码。
- MVC主要作用是降低了视图与业务逻辑间的双向耦合。
- MVC不是一种设计模式,MVC是一种架构模式,当然不同的MVC存在差异
2. SpringMvc介绍
Spring MVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把Model,View,Controller分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的几部分,简化开发,减少出错,方便组内开发人员之间的配合。
3. SpingMVC的常用组件
- DispatcherServlet
是一种前端控制器,由框架提供。作用:统一处理请求和响应。除此之外还是整个流程控制的中心,由 DispatcherServlet 来调用其他组件,处理用户的请求 - HandlerMapping
处理器映射器,由框架提供。 作用:根据请求的 url、method 等信息来查找具体的 Handler(一般来讲是Controller) - Handler
处理器,注意,这个需由工程师自己开发。 作用:在DispatcherServlet 的控制下,Handler对具体的用户请求进行处理 - HandlerAdapter
处理器适配器 ,由框架提供。 作用:根据映射器找到的处理器Handler 信息,按照特定的规则去执行相关的处理器 Handler。 - ViewResolver
视图解析器,由框架提供。 作用: ViewResolver 负责将处理结果生成 View 视图。 ViewResolver 首先根据逻辑视图名解析成物理图名,即具体的页面地址,再生成 View 视图对象,最后对 View 进行渲染将处理结果通过页面展示给用户。 - View
视图,工程师自己开发 作用:View接口的职责就是接收model对象、Request对象、Response对象,并渲染输出结果给Response对象。
4.SpringMVC的工作流程
- 用户通过浏览器发起 HttpRequest 请求到前端控制器 (DispatcherServlet)。
- DispatcherServlet 将用户请求发送给处理器映射器 (HandlerMapping)。
- 处理器映射器 (HandlerMapping)会根据请求,找到负责处理该请求的处理器,并将其封装为处理器执行链返回 (HandlerExecutionChain) 给 DispatcherServlet
- DispatcherServlet 会根据 处理器执行链 中的处理器,找到能够执行该处理器的处理器适配器(HandlerAdaptor)
--注,处理器适配器有多个 - 处理器适配器 (HandlerAdaptoer) 会调用对应的具体的 Controller
- Controller 将处理结果及要跳转的视图封装到一个对象 ModelAndView 中并将其返回给处理器适配器 (HandlerAdaptor)
- HandlerAdaptor 直接将 ModelAndView 交给 DispatcherServlet ,至此,业务处理完毕
- 业务处理完毕后,我们需要将处理结果展示给用户。于是DisptcherServlet 调用 ViewResolver,将 ModelAndView 中的视图名称封装为视图对象
- ViewResolver 将封装好的视图 (View) 对象返回给 DIspatcherServlet
- DispatcherServlet 调用视图对象,让其自己 (View) 进行渲染(将模型数据填充至视图中),形成响应对象 (HttpResponse)
- 前端控制器 (DispatcherServlet) 响应 (HttpResponse) 给浏览器,展示在页面上。
5. Postman工具
5.1. 介绍
Postman最早是Google浏览器的一个插件存在的,因为Google退出国内市场,现在postman主要是以一个 APP的形式存在。 Postman最初设计上就是为接口测试而设计的,对于测试人员来说主要用来做接口测试。
5.2.功能
- postman是一款强大的网页调试、HTTP请求发送及接口测试用例运行的工具
- 能够模拟各种HTTP的请求方式,比如:GET、POST、DELETE、PUT等请求方式
- 请求中可以发送文件(图片、文本文件等)、额外的添加header等,实现特定的功能
- 能够更高效的帮忙后台独立进行接口测试
5.3.使用
拟发送单个请求的创建的步骤 :
1、选择请求方式
2、然后输入请求的URL
3、然后切换到Body选项,选择Content-Type,选择以后postman会自动 把Content-Type填写的headers(请求头信息)中。
4、在body中填写请求参数 (GET例外,GET请求没有请求主体)
5、点击“Send”按钮模拟发送请求
6. 常用注解使用
6.1. @Controller
6.1.1. 介绍
在SpringMVC 中提供了一个非常简便的定义Controller 的方法,你无需继承特定的类或实现特定的接
口,只需使用@Controller 标记一个类是Controller ,然后使用@RequestMapping 等一些注解用以定
义请求URL 请求和Controller 方法之间的映射,这样的Controller 就能被外界访问到。其标记在一个类
上,使用它标记的类就是一个SpringMVC Controller 对象。分发处理器将会扫描使用了该注解的类的方
法,并检测该方法是否使用@RequestMapping 注解。@Controller 只是定义了一个控制器类,而使用
@RequestMapping 注解的方法才是真正处理请求的处理器。
7.1.2. 实例
@Controller注解在类上,表明这个类是Spring MVC里的Controller,将其声明为Spring的一个Bean,
Dispatch Servlet会自动扫描注解了此注解的类,并将Web请求映射到注解了@RequestMapping的方
法上。相关代码如下:
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class TestController {
@RequestMapping("/tests")
public String tests(){
return "index";
}
}
6.2. @RequestMapping
6.2.1. 注解的位置
@RequestMapping注解是用来映射Web请求(访问路径和参数)、处理类和方法的。它可以注解在类
和方法上。注解在方法上的@RequestMapping路径会继承注解在类上的路径,@RequestMapping支
持Servlet的request和response作为参数,也支持对它们的媒体类型进行配置。
@RequestMapping标识一个类:设置映射请求的请求路径的初始信息
@RequestMapping标识一个方法:设置映射请求请求路径的具体信息
相关代码如下:
@Controller
@RequestMapping("/test")
public class TestController {
@RequestMapping("/tests")
public String tests(){
return "index";
}
}
6.2.2. value属性
@RequestMapping注解的value属性通过请求的请求地址匹配请求映射
@RequestMapping注解的value属性是一个字符串类型的数组,表示该请求映射能够匹配多个请求地址
所对应的请求
@RequestMapping注解的value属性必须设置,至少通过请求地址匹配请求映射
实例如下:
@Controller
@RequestMapping("/test")
public class TestController {
@RequestMapping(value = {"test2","test22"})
public String test2(){
return "index";
}
}
6.2.3. method属性
@RequestMapping注解的method属性通过请求的请求方式(get或post)匹配请求映射
@RequestMapping注解的method属性是一个RequestMethod类型的数组,表示该请求映射能够匹配
多种请求方式的请求 若当前请求的请求地址满足请求映射的value属性,但是请求方式不满足method
属性,则浏览器报错405:Request method ‘POST’ not supported
实例如下:
@Controller
@RequestMapping("/test")
public class TestController {
@RequestMapping(value = "test3",method = RequestMethod.GET)
public String test3(){
return "index";
}
}
6.3. @ResponseBody
6.3.1. 介绍
在使用SpringMVC时,Controller中的方法返回值会通过视图处理器ViewResolver处理为页面的URL,
然后跳转到对应页面中,如上面例子返回的index,将转换为/WEB-INF/jsp/index.jsp。有时候我们需要
用Controller实现网络服务接口,比如:商品查询、查询天气、新闻数据等。就不需要进行页面跳转而
是直接返回数据。 这时候我们可以在方法上该注解。
6.3.2. 实例
该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,
写入到Response对象的body数据区。
实例如下:
@Controller
@RequestMapping("/test")
public class TestController {
@RequestMapping("/testRequestMapping")
@ResponseBody
public String testRequestMapping(){
return "index";
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。