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)
