SpringMVC(2)

MVC

  • MVC(Model View Controller)是一种软件设计的框架模式,它采用模型(Model)-视图(View)-控制器(controller)的方法把业务逻辑、数据与界面显示分离。把众多的业务逻辑聚集到一个部件里面,当然这种比较官方的解释是不能让我们足够清晰的理解什么是MVC的。用通俗的话来讲,MVC的理念就是把数据处理、数据展示(界面)和程序/用户的交互三者分离开的一种编程模式。
  1. Model(模型层):指工程中德尔JavaBean,用于处理数据
    • 实体类Bean:存储业务数据
    • 业务处理Bean:指Service或Dao对象,处理业务逻辑和数据访问
  2. View(视图层):指工程中的html/jsp等页面,作用是与用户进行交互,展示数据
  3. Controller(控制层):指工程中的servlet,作用是接受请求和相应浏览器
  • 工作流程:用户通过视图层发送请求到服务器,在服务器中请求被Controller接收,Controller调用相应的Model层处理请求,处理完毕将结果返回到Controller,Controller再根据请求处理的结果找到相应的View视图,渲染数据后最终响应给浏览器
  • SpringMVC 是 Spring 为表述层开发提供的一整套完备的解决方案。在表述层框架历经 Strust、WebWork、Strust2 等诸多产品的历代更迭之后,目前业界普遍选择了 SpringMVC 作为 Java EE 项目表述层开发的首选方案
  • 注:三层架构分为表述层(或表示层)、业务逻辑层、数据访问层,表述层表示前台页面和后台servlet

pom.xml

  • //表示坐标
    <groupId>groupId</groupId> <artifactId>OnlineLearning1.8</artifactId> <version>1.0-SNAPSHOT</version>
  • //表示打包方式
    <packaging>war</packaging>
    
  • //表示当前工程所有依赖
    <dependencies>
    </dependencies>
    
  • //添加依赖
    <!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
    <dependency>
        <groupId>commons-fileupload</groupId>
        <artifactId>commons-fileupload</artifactId>
        <version>1.3.1</version>
    </dependency>
    

     

  • 自动添加上下文路径<a th:href="@{/target}">
  •  总结

    • 浏览器发送请求,若请求地址符合前端控制器的url-pattern,该请求就会被前端控制器DispatcherServlet处理。
    • 前端控制器会读取SpringMVC的核心配置文件,通过扫描组件找到控制器,将请求地址和控制器中@RequestMapping注解的value属性值进行匹配,若匹配成功,该注解所标识的控制器方法就是处理请求的方法。
    • 处理请求的方法需要返回一个字符串类型的视图名称,该视图名称会被视图解析器解析,加上前缀和后缀组成视图的路径,
    • 通过Thymeleaf对视图进行渲染,最终转发到视图所对应页面
  • RequestMapping
    • 接收到指定的请求,就会来找到在映射关系中对应的控制器方法来处理这个请求。
    • @RequestMapping标识一个类:设置映射请求的请求路径的初始信息

      @RequestMapping标识一个方法:设置映射请求请求路径的具体信息

    • @Controller
      @RequestMapping("/test")
      public class RequestMappingController {
      
      	//此时请求映射所映射的请求的请求路径为:/test/testRequestMapping
          @RequestMapping("/testRequestMapping")
          public String testRequestMapping(){
              return "success";
          }
      
      }
    • @RequestMapping注解的value属性通过请求的请求地址匹配请求映射

      @RequestMapping注解的value属性是一个字符串类型的数组,表示该请求映射能够匹配多个请求地址所对应的请求

      @RequestMapping注解的value属性必须设置,至少通过请求地址匹配请求映射

    • @RequestMapping注解的method属性通过请求的请求方式(get或post)匹配请求映射

      @RequestMapping注解的method属性是一个RequestMethod类型的数组,表示该请求映射能够匹配多种请求方式的请求

      若当前请求的请求地址满足请求映射的value属性,但是请求方式不满足method属性,则浏览器报错405:Request method 'POST' not supported

      • 对于处理指定请求方式的控制器方法,SpringMVC中提供了@RequestMapping的派生注解

        处理get请求的映射-->@GetMapping

        处理post请求的映射-->@PostMapping

        处理put请求的映射-->@PutMapping

        处理delete请求的映射-->@DeleteMapping

      • 常用的请求方式有get,post,put,delete

        但是目前浏览器只支持get和post,若在form表单提交时,为method设置了其他请求方式的字符串(put或delete),则按照默认的请求方式get处理

        若要发送put和delete请求,则需要通过spring提供的过滤器HiddenHttpMethodFilter,在RESTful部分会讲到

  • params

    • "param":要求请求映射所匹配的请求必须携带param请求参数

      "!param":要求请求映射所匹配的请求必须不能携带param请求参数

      "param=value":要求请求映射所匹配的请求必须携带param请求参数且param=value

      "param!=value":要求请求映射所匹配的请求必须携带param请求参数但是param!=value

  • headers

    • "header":要求请求映射所匹配的请求必须携带header请求头信息

      "!header":要求请求映射所匹配的请求必须不能携带header请求头信息

      "header=value":要求请求映射所匹配的请求必须携带header请求头信息且header=value

      "header!=value":要求请求映射所匹配的请求必须携带header请求头信息且header!=value

上一篇:匹配 ----基于深度学习实现以图搜图功能


下一篇:使用Python批量发送EXcel表中的邮件地址及表头与内容