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的工作流程

  1. 用户通过浏览器发起 HttpRequest 请求到前端控制器 (DispatcherServlet)。
  2. DispatcherServlet 将用户请求发送给处理器映射器 (HandlerMapping)。
  3. 处理器映射器 (HandlerMapping)会根据请求,找到负责处理该请求的处理器,并将其封装为处理器执行链返回  (HandlerExecutionChain)  给 DispatcherServlet
  4. DispatcherServlet 会根据 处理器执行链 中的处理器,找到能够执行该处理器的处理器适配器(HandlerAdaptor) 
    --注,处理器适配器有多个
  5. 处理器适配器 (HandlerAdaptoer) 会调用对应的具体的 Controller
  6. Controller 将处理结果及要跳转的视图封装到一个对象  ModelAndView 中并将其返回给处理器适配器  (HandlerAdaptor)
  7. HandlerAdaptor 直接将 ModelAndView 交给 DispatcherServlet ,至此,业务处理完毕
  8. 业务处理完毕后,我们需要将处理结果展示给用户。于是DisptcherServlet 调用  ViewResolver,将 ModelAndView 中的视图名称封装为视图对象
  9. ViewResolver 将封装好的视图 (View) 对象返回给 DIspatcherServlet
  10. DispatcherServlet 调用视图对象,让其自己 (View) 进行渲染(将模型数据填充至视图中),形成响应对象 (HttpResponse)
  11. 前端控制器 (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";
    }
}

波波鱼
4 声望3 粉丝

« 上一篇
Spring问题聚合
下一篇 »
SpringMVC配置