Spring Boot简明教程之实现Web开发及常用参数获取方式分析

文章目录

Spring Boot简明教程之实现Web开发及常用参数获取方式分析

在前面的文章中,我们已经大致介绍了有关Spring Boot的项目配置等信息,我们也体会到了Spring Boot对于Web开发的支持。在这篇文章中,我们将介绍Spring Boot对于Web开发的支持:

Controller的使用

在MVC类型的项目开发中,控制器(Controller)是十分重要的一个环节,其中,最重要的就是下面四个注解:

注解解释
@Controller处理请求
@ResponseBody将返回的数据转换为 JSON 格式
@RestController@RestController=@Controller+@ResponseBody
@RequestMapping配置URL映射

请求处理:@RestController

控制器(Controller)是MVC架构中最重要的一环,同时JSON对于前后端分离的项目中,前后端数据交流的重要传输方式,对于这二者的支持,对于Web开发来说是十分重要的。我们都知道@Controller用于处理http请求,而@ResponseBody是将数据转换为JSON数据,而@RestController就更像是两者的结合。

例如:

@RestController public class HelloController { @RequestMapping("/hello") public String hello(){ return "hello"; } } 

我们在浏览器输入:http://localhost:8080/hello

《Spring Boot简明教程之实现Web开发及常用参数获取方式分析》
成功访问,但是如果我们将@RestController更改为@Controller,就会发现:访问报错,大概意思就是我们缺少视图的访问模板,这是因为@Controller更多时候是搭配着视图模板进行使用(这点我们会在后面进行详细的介绍)

@Controller public class HelloController { @RequestMapping("/hello") public String hello(){ return "hello"; } } 

《Spring Boot简明教程之实现Web开发及常用参数获取方式分析》

当我们加上@ResponseBody后,访问又再次成功。

@Controller @ResponseBody public class HelloController { @RequestMapping("/hello") public String hello(){ return "hello"; } } 

这就是证明了:@RestController=@Controller+@ResponseBody。

当我们进入@RestController源码查看时,发现:再次印证了这一点

《Spring Boot简明教程之实现Web开发及常用参数获取方式分析》

路由设置:@RequestMapping

【@RequestMapping】 用于配置URL映射,即可配置与类,也可以配置与方法。配置于类表示该类访问的父路径,配置于方法则表示该方法的实际映射地址。

该注解有三个常用的属性:value、method 和 produces。

属性说明
value指定请求的实际地址,可以省略不写
method指定请求的类型,默认为 GET
produces指定返回内容类型,如 produces = "application/json; charset=UTF-8"

例如,我们将之前的HelloController更改为:

@RestController @RequestMapping(value = "/test") public class HelloController { @RequestMapping(value = "/hello") public String hello(){ return "hello"; } } 

我们就发现,访问的地址已经变成了:http://localhost:8080/test/hello

《Spring Boot简明教程之实现Web开发及常用参数获取方式分析》

如果我们想让多个URL能访问同一个方法,应该怎么做呢?

@RestController @RequestMapping(value = "/test") public class HelloController { @RequestMapping(value = {"/hello","hello2"}) public String hello(){ return "hello"; } } 

我们就发现:地址变成了一个数组,只要是这个数组内的url均能访问该方法。

《Spring Boot简明教程之实现Web开发及常用参数获取方式分析》

如果我们想指定访问的方法:

@RestController @RequestMapping(value = "/test") public class HelloController { @RequestMapping(value = "/hello" ,method = RequestMethod.POST) public String hello(){ return "hello"; } } 

再次启动,我们就发现:访问方法被限制为【POST】

《Spring Boot简明教程之实现Web开发及常用参数获取方式分析》

如果我们再在浏览器输入:http://localhost:8080/test/hello访问,就会被拒绝:

《Spring Boot简明教程之实现Web开发及常用参数获取方式分析》

除此之外呢,还有更加简便的方式来实现请求方式的限制:

注释解释
@DeleteMappingDELETE方法
@GetMappingGET方法
@PutMappingPUT方法
@PostMappingPOST方法

例如:

@RestController @RequestMapping(value = "/test") public class HelloController { // @RequestMapping(value = "/hello" ,method = RequestMethod.GET,produces = "application/json; charset=UTF-8") @GetMapping("/hello") public String hello(){ return "hello"; } } 

启动:效果和 @RequestMapping一样,而且更加简洁。

《Spring Boot简明教程之实现Web开发及常用参数获取方式分析》

参数获取

对于参数获取,主要使用的是下面三个注解:

注解说明
@PathVariable获取 URL 参数
@RequestParam从 Request 里获取参数值
@RequestBody获取JSON实体

@PathVariable

使用@PathVariable获取参数,更多的是针对http://localhost:8080/test/hello/{phone}这类动态参数,例如:

@RestController @RequestMapping(value = "/test") public class HelloController { @RequestMapping(value = "/hello/{phone}") public Integer phone(@PathVariable Integer phone ){ return phone; } } 

启动项目,并在浏览器输入:http://localhost:8080/test/hello/546

《Spring Boot简明教程之实现Web开发及常用参数获取方式分析》

如果有多个动态参数:

@RestController @RequestMapping(value = "/test") public class HelloController { @RequestMapping(value = "/hello/{phone}/{name}") public String phone(@PathVariable Integer phone,@PathVariable String name){ return "电话:"+ phone +"\n"+ "姓名: " + name; } } 

启动项目,在浏览器输入:http://localhost:8080/test/hello/546/name

《Spring Boot简明教程之实现Web开发及常用参数获取方式分析》

这样就获取了多个参数,但是需要注意的是: URL 中的参数和方法中的参数名需要保持一致。如果不同,那么就需要指定URL中的参数名来获取,例如:

@RestController @RequestMapping(value = "/test") public class HelloController { @RequestMapping(value = "/hello/{phone}/{name}") public String phone(@PathVariable(value = "phone") Integer myPhone,@PathVariable String name){ return "电话:"+ myPhone +"\n"+ "姓名: " + name; } } 

这里就不再展示运行结果。

@RequestParam

@RequestParam获取参数主要针对URL为:http://localhost:8080/test/hello/?phone=456

例如:

@RestController @RequestMapping(value = "/test") public class HelloController { @RequestMapping(value = "/hello") public Integer phone(@RequestParam Integer phone){ return phone; } } 

启动项目,输入:http://localhost:8080/test/hello/?phone=456

《Spring Boot简明教程之实现Web开发及常用参数获取方式分析》

但需要注意的是,如果URL 中的参数和方法中的参数名不一致,仍然需要指定参数名,例如:

@RestController @RequestMapping(value = "/test") public class HelloController { @RequestMapping(value = "/hello") public Integer phone(@RequestParam(value = "phone") Integer myPhone){ return myPhone; } } 

这里就不再演示运行结果。同时@RequestParam还有两个常用的属性:

属性说明
required参数是否为必须,True 表示为必须;
defaultValue默认值,当获取到的参数为Null时使用

例如:

@RestController @RequestMapping(value = "/test") public class HelloController { @RequestMapping(value = "/hello") public Integer phone(@RequestParam(value = "phone",required = false,defaultValue = "139") Integer myPhone){ return myPhone; } } 

启动项目,浏览器输入:http://localhost:8080/test/hello/

《Spring Boot简明教程之实现Web开发及常用参数获取方式分析》

我们发现,当我们为传值时,返回的我们设置的默认值:139。

@RequestBody

@RequestBody主要用来获取前端传来的封装好的Json格式的参数。

例如:

@RestController @RequestMapping(value = "/test") public class HelloController { @RequestMapping(value = "/hello",method = RequestMethod.POST) public String hello( @RequestBody String str){ return str; } } 

然后,我们使用Postman进行Post请求测试(因为浏览器不方便对Post请求进行测试,Postman是后端开发中比较常用的接口测试工具,官网地址

《Spring Boot简明教程之实现Web开发及常用参数获取方式分析》

Json的使用

我们在上文提到过,@RestController可以将返回参数转为Json格式。那么我们现在就来感受下Spring Boot对于Json的支持。

实体类

创建如下的目录结构

《Spring Boot简明教程之实现Web开发及常用参数获取方式分析》

其中,Person类为:

package cn.newtol.springboot05.entity; /** * @Author: REN * @Description: * @Date: Created in 20:10 2018/9/17 */ public class Person { private String name; private Integer phone; public Person(String name, Integer phone) { this.name = name; this.phone = phone; } ... /* 省略get、set方法 */ } 

HelloController为:

@RestController @RequestMapping(value = "/test") public class HelloController { @RequestMapping(value = "/person",method = RequestMethod.GET) public Person person(){ Person person = new Person("ABC",456); return person; } } 

启动项目,浏览器输入:http://localhost:8080/test/person

《Spring Boot简明教程之实现Web开发及常用参数获取方式分析》

List

将HelloController改为:

@RestController @RequestMapping(value = "/test") public class HelloController { @RequestMapping(value = "/list",method = RequestMethod.GET) public List<String> list(){ List<String> lists = new ArrayList<>(); lists.add("abc"); lists.add("cdf"); return lists; } } 

启动项目,浏览器输入:http://localhost:8080/test/list

《Spring Boot简明教程之实现Web开发及常用参数获取方式分析》
我们就成功的将List转换为了Json格式,对于其他的数据类型,我们就不再进行演示,有兴趣的小伙伴可以自行进行测试。

总结

我们主要介绍了Spring Boot对于Web开发的一些支持,其中主要介绍了:@RestController 、 @RequestMapping、@PathVariable 、@RequestParam 、@RequestBody五个注解,以及演示了一下Spring Boot对于Json的支持。

源码地址

源码地址

关注博主的个人公众号,有更多视频学习资源分享~
《Spring Boot简明教程之实现Web开发及常用参数获取方式分析》

    原文作者:Spring Boot
    原文地址: https://blog.csdn.net/m0_37888031/article/details/82749009
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞