SpringBoot-Vue学习(二)

SpringBoot的MVC架构

SpringBoot的MVC架构如图所示,分为Model、View、Controller三部分

控制器注解

  • SpringBoot提供了@Controller和@RestController两种注解来标识某个类,表示这个类将会负责接受和处理HTTP请求

  • 如果请求的是页面和数据,则使用@Controller注解,该注解用于前后端不分离的项目

  • 如果只是请求数据,则可以使用@RestController注解,该注解用于前后端分离的项目

  • 默认情况下,@RestController注解会将返回的对象数据转换成JSON格式

路由映射

  • @RequestMapping注解主要负责URL的路由映射。它可以添加在Controller类或者具体的方法上

  • 如果添加在Controller类上,则这个Controller中的所有路由映射都将会加上此映射规则,如果添加在方法上,则只对当前方法生效

  • @RequestMapping注解包含很多属性参数来定义HTTP的请求映射规则。常用的属性参数如下:

    1. value:请求URL的路径,支持URL模版、正则表达式
    2. method:HTTP请求方法,如get、post、delete、put等
    3. consumes:请求的媒体类型(Content-Type),如application/json
    4. produces:相应的媒体类型
    5. params,headers:请求的参数及请求头的值
  • @RequestMapping的通配符匹配非常简单实用,支持"*"、"?"、"**"等通配符

  • 符号"*“匹配任意字符,符号”**“匹配任意路径,符号”?"匹配单个字符

  • 有通配符的优先级低于没有通配符的,比如/user/add.json比/user/*.json优先匹配

  • 有"**"通配符的优先级低于有 "*"通配符的

  • @RequestMapping("/hello",method = RequestMethod.GET)与@GetMapping("/hello")效果相同

参数传递

  • @RequestParam将请求参数绑定到控制器的方法参数上,接收的参数来自HTTP请求提货请求url的QueryString,当请求的参数名称与Controller的业务方法参数名称一致时,@RequestParam可以省略
  • @PathVaraible:用来处理动态的URL,URL的值可以作为控制器中处理方法的参数
  • @RequestBody接收的参数是来自requestBody中,即请求体。一般用于处理非Content-Type:application/x-www-form-urlencoded编码格式的数据,比如:“application/json”、“application/xml”等类型的数据
  1. 修改hello方法,添加参数name

  2. 后续测试时请求的参数名称与业务方法中的参数名相同,所以我这里省略@RequestParam注解

  1. 在浏览器中访问http://localhost:8080/hello 并向参数name赋值

  2. 浏览器成功返回“你好 SpringBoot”

  1. 需要传递多个参数时,各个参数间用“&”符号进行连接

  1. 若url请求中的参数名与方法中的参数名不一样,则必须在方法中加入@RequestParam注解,否则方法无法正常接收到参数的值

  2. 若添加了@RequestParam注解,url在进行请求时必须传入该参数,否则hello方法无法被调用,同时传入的参数名应当改为phone而不是phonenum

  1. 这里url传递的参数名为phone,方法中定义的参数名为phonenum,但是参数仍被正常传入hello方法

  1. 当需要传入的参数很多时,可以将参数封装成类
  2. 在com.example.helloworld包下新建entity包
  3. 在entity包下新建User类,并重写toString方法

1.在HelloController类中新建postTest方法,并添加@PostMapping注解,表示此方法仅接受post请求,并将请求中的数据赋值给User类的一个实例usr

  1. 在ApiPost中添加一个post请求的测试,并传入参数username和password(这两个参数的名字需要和User类中定义的成员变量名相同)
  2. 可以看到ApiPost中成功返回“POST请求”这一字符串,并且IDEA中成功打印相关的username和password信息

  1. 如果传入的参数想要是JSON格式的数据,则需要在方法的传入参数前添加@RequestBody注解

猜你喜欢

转载自blog.csdn.net/Qudoudou2020/article/details/133956411