Spring Boot学习2(Sping Boot-MVC框架)

一、Spring Boot介绍

1、Spring Boot介绍

针对Spring 搭建Web程序复杂的问题,Spring Boot简化了Spring应用开发,不需要配置就能运行Spring应用,Spring Boot管理 Spring容器、第三方插件,并提供很多默认系统级的服务。

相比Spring具有以下优点:

  • 实现约定大于配置,是一个低配置的应用系统框架
  • 提供了内置的Tomcat或Jetty容器
  • 通过依赖的jar包管理、自动装配技术、容易支持与其他技术体系、工具集成。
  • 支持热加载、开发体验好。
  • starters自动依赖于版本控制。 

2、Spring Boot 框架MVC框架

Spring Boot 框架下有着完善的 MVC 设计模型支持,其在 SpringMVC4.x 基础上进行了简化操作,对于项目的配置工作采用自动化配置的方式,使得在 SpringBoot 环境下进行 MVC 模式的开发变得尤为简单。

SpringBoot 下 的 MVC 基 本 由 Controller + Thymeleaf+Model 组成,Controller 控制器 起 到 在View 和 Model 间 衔 接 作 用 ,Thymeleaf 是 View,Model 有专门的类与其对应,对于数据的操作则完全通过 Model 来完成。

参考:https://www.cnblogs.com/zyt-bg/p/10627573.html

3、引入依赖

 Spring Boot集成Spring MVC框架并实现自动配置,只需要在pom.xml中添加以下依赖即可:

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>

 二、MVC框架

1、Spring Boot创建的Web项目目录结构如下

  •  src/main/java:Java 原生代码的存放位置。
  • src/main/resources:前端视图相关的模板、资源存放的位置,其中 templates 子目录存放由Thymeleaf 产生的视图模板等;static 存放各类资源文件。
  • src/main/resources/static:用于存放各类静态资源。 
  • src/main/resources/templates:用于存放模板文件,如Thymeleaf。
  • src/main/resources/application.properties:配置文件,默认支持两种类型properties和.yml
  • src/test:测试目录。
  • target :项目打包后的目标目。
  • External Libraries:包括JRE的录目录和Maven依赖的库目录
  • pom.xml:Maven 的依赖文件

 2、控制器

Spring MVC框架不像传统的MVC框架那样必须继承某个基础类才能处理用户的HTTP请求,只需要使用标注的方式。

控制器有Controller和RestController两种。

  •  @Controller:基本的控制器,用于接收、传输纯字符串信息,调用业务模型处理信息,也是SpringBoot 主要的控制器,它可以完成大部分 MVC
  •  @RestController:该控制器是 SpringBoot 将WebService 技术与常用的数据封装格式整合在一起,通过一定的技术规则,将原来较为复杂的数据封装 技 术 简 化 为 十 分 方 便 的 几 个 步 骤 来 实 现WebService 功能,常用的数据封装格式(例如:Json、Xml)在 RestController 中均有支持。

3、URL映射到方法

(1)@RequestMapping

使用@RequestMapping可以映射到某个Controller类,或某个方法。RequestMapping有多个属性来进一步匹配HTTP请求到Controller方法:

  • value,请求的URL的路径,支持URL模板、正则表达式。
  • method, HTTP 请求方法,有 GET、POST、PUT 等。
  • consumes,允许的媒体类型(Media Types),如 consumes = "application/json",对应 于请求的 HTTP 的 Content-Type。
  • produces,相应的媒体类型,如 produces="application/json",对应于 HTTP 的 Accept字段。
  • params,请求的参数,如 params="action=update’’。
  • headers,请求的 HTTP 头的值,如 headers = "myHeader=myValue"。

(2)URL路径匹配

 1)RequestMapping的value属性用于匹配URL映射,支持简单的表达式

  @RequestMapping("/get/{id}.json")
  public @ResponseBody String getDataById(@PathVariable("id") Long id) {
        return userService.getUserById(id);
    }

当访问/get/1.json时,调用getDataById方法,且参数id的值是1。

2)通配符匹配

Ant用“*”表示匹配任意字符;“**”表示统配任意路径;“?”匹配单个字符

  • /user/*.html,匹配/user/1.html和/user/11.html等
  • /**/1.html,匹配/user/1.html和/user/add/1.html等
  • /user/?.html,匹配/user/1.html和/user/2.html等

3)同时在类和方法上匹配

@RequestMapping("/home")
public class IndexController {
     @RequestMapping("/")
      public String index() {
        return "Hello home";
    }
     @RequestMapping("/get")
      public  String get() {
        return "Hello home-get";
    }
}

/home请求由index()方法处理;/home/get请求由get()方法处理。

(3)HTTP method匹配

 @RequestMapping 注解能够处理 HTTP 请求的方法, 比如 GET, PUT, POST, DELETE 以及 PATCH。

Spring提供了简化后的@RequestMapping

@GetMapping、@PostMapping、@PutMapping、@DeleteMapping、@PatchMapping

  @GetMapping("/get/*.json")
  public @ResponseBody String getDataById() {
        return "hello";
    }

 等价于:

@RequestMapping("/get/*.json")
public class IndexController {
     @GetMapping(method=RequestMethod.GET)
      public String getDataById() {
        return "Hello";
    }

}

(4)consumes和produces

属性consumes意味着请求的HTTP头的Context-Type媒体类型与consumes的值匹配,才能调用此方法。

@RequestMapping(value = "/cons", consumes = {
        "application/JSON",
    })
    String getConsumes() {
        return "Consumes attribute";
    }

此处consumes(请求的媒体类型)为application/JSON。

(5)params和header匹配

@RequestMapping 注解提供了一个 header 元素来根据请求中的消息头内容缩小请求映射的范围。

4、方法参数

Spring的Controller方法可以接受多种类型参数,主要接受的参数如下:

  • @PathVariable,可以将URL中的值映射到方法参数中。
  • Model,MVC的Model。
  • JavaBean,将HTTP参数映射到JavaBean对象。

(1)@PathVariable

@PathVariable用于从请求URL中获取参数并映射到方法参数中。

三、视图技术

 

四、常用注解

1、主程序类、主入口类

@SpringBootApplication

标注一个主程序类,说明这是一个Spring Boot应用,SpringBoot运行这个类的main()方法。

注意:入口类要放到包的最外层,以便能够扫描到所有子包中的类。


@SpringBootApplication
public class SpringBootTest1Application {

	public static void main(String[] args) {

		SpringApplication.run(SpringBootTest1Application.class, args);
	}

}

 2、配置类

@SpringBootConfiguration

标注在某个类上,表示这是一个Sping Boot配置类。

3、开启自动配置功能

@EnableAutoConfiguration

以前需要配置的东西,Spring Boot帮助我们配置

@AutoConfigurationPackage 自动配置包

将配置类(@SpringBootApplication标注的类)所在包及下面所有子包里面的所有组件扫描到Spring容器。

4、测试类

@SpringBootTest
class SpringBootTest1ApplicationTests {

	@Test
	void contextLoads() {
	}

}

@SpringBootTest可以引用入口类的配置。

 

 

 


参考链接:

https://blog.csdn.net/rocling/article/details/82903574

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值