1. Servlet生命周期
- 实例化——Servlet容器创建Servlet实例。
- 初始化——该容器调用
init()
方法。 - 请求处理——如果请求Servlet,则容器调用
service()
方法。 - 服务终止——销毁实例之前调用
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
)