1. Servlet生命周期

  1. 实例化——Servlet容器创建Servlet实例。
  2. 初始化——该容器调用init()方法。
  3. 请求处理——如果请求Servlet,则容器调用service()方法。
  4. 服务终止——销毁实例之前调用destroy()方法。

2、@RequestParam和@RequestBody

Spring MVC中,@RequestBody的解析过程,大致如下:

  • 使用反射的方式,获取到@RequestBody注解的对象的setter方法,invoke赋值,如果赋值失败,就是当前属性值不符合类型要求。
  • 如果@RequestBody注解的类中,还有子类,使用到了BeanDeserializer实现类的反序列化。

区别:

  • @requestparam用来接收ContentType为x-www-form-urlencoded的请求参数,请求体格式为a=xxx&b=xxx。(Get请求使用@requestparam
  • @requestbody需要自定义解析器来解析请求体内容。比如application/json,前端需要把参数转成json格式,后端一般用jackson来解析。当然你也可以自定义格式,只要你能解析就行。(Post请求使用@requestbody