微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SpringMVC2

MVC

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

pom.xml

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

     

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

     总结

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

      @RequestMapping标识一个类:设置映射请求的请求路径的初始信息

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

      @H_502_3@
      @Controller
      @RequestMapping("/test")
      public class RequestMappingController {
      
      	//此时请求映射所映射的请求的请求路径为:/test/testRequestMapping
          @RequestMapping("/testRequestMapping")
          public String testRequestMapping(){
              return "success";
          }
      
      }
      @H_502_3@

      @RequestMapping注解的value属性通过请求的请求地址匹配请求映射

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

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

      @H_502_3@

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

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

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

        @H_502_3@

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

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

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

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

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

        @H_502_3@

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

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

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

    @H_502_3@

    params

      @H_502_3@

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

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

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

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

    @H_502_3@

    headers

      @H_502_3@

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

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐