Spring Boot Web开发入门-请求与响应

前端浏览器发起请求,会携带HTTP请求数据,HTTP服务器(Tomcat)负责对请求数据进行解析,然后将解析好的数据封装到HttpServletRequest对象中。此后,应用程序对该对象中的数据进行处理。最后,Tomcat服务器需要根据响应数据的规定格式,通过HttpServletResponse对象设置相应数据,然后产生响应信息返回给浏览器。spring boot框架提供了DispatcherServlet前端控制器,让业务逻辑程序开发者可以专注于开发Controller部分的代码。

综上所述:

  • 请求:获取请求数据。
  • 响应:设置响应数据。

首先关注如何从请求数据中获取各种参数。

  1. 简单参数,Java提供的简单类型。controller中定义的函数的参数是前面提到的。通过最原始的方式获取请求参数,需要通过HttpServletRequest对象(函数的参数)手段获取,由于所有参赛都是字符串类型,所以还需要进行解析和类型转换,比较麻烦。spring框架提供了更方便的方法,只要定义controller方法的形参的参数遍历名与请求参数的参数名一致,就可以自动接收到对应的参数,而且会自动进行类型转换。如果名字不一致,获取到的参数就会是null值,如果没办法修改名字,可以通过@RequestParam手动映射名字。该注解还有另一个参数required,表示该参数必须传递(不传递将报错),该参数可选,且默认值为true

  2. 实体参数,Java简单实体对象POJO。类似地,定义请求参数名与对象定义的属性名一致,就可以自动接收参数并封装成对应的对象。

  3. 数组集合参数,Java数组或Java集合类型的参数。对于数组,请求参数名与数组名一致就行;对于Java集合,不仅需要名字一致,还需要在函数形参前面使用@RequestParam注解来绑定参数关系。

  4. 日期时间参数,比如Java的LocalDateTime类型。需要通过@DateTimeFormat注解指定字符串表示时间的pattern。

  5. json参数。注意json参数必须设置为post请求,因为json参数是通过请求体传递的,而get请求没有请求体。json参数的接收一般通过定义的实体对象,保证json的key名与形参的类对象的属性名相同,此外还需要在形参前面加上@RequestBody注解。

  6. 路径参数,参数是请求url的一部分。在定义mapping的url的时候使用{...}类标识该参数,内部写明名字,然后在方法的形参前面使用@PathVariable注解表明该参数从url中获取。当然,形参名要与请求参数名一致。注意,可以从url中获取多个路径参数。

下面讲响应数据。

controller方法返回的数据可以直接是字符串,也可以是对象或集合,并不是前面所讲的HttpServletResponse,原因在于在类或方法上使用了@RestController注解,该注解是@Controller@ResponseBody两个注解,后者的作用是将方法返回值直接响应给前端,当返回值类型是实体对象类型或Java集合,就会转换成json格式再响应。

可以发现响应数据的形式很多样,可能是字符串、对象、集合等等,实践中可以定义一个统一的响应结果类,controller方法可以返回响应结果对象供前端解析。

public class Result {
	private Integer code;  // 响应码
	private String msg;  // 响应信息
	private Object data;  // 响应数据
}
posted @ 2025-02-06 19:32  随机生成一个id  阅读(50)  评论(0)    收藏  举报