意见箱
恒创运营部门将仔细参阅您的意见和建议,必要时将通过预留邮箱与您保持联络。感谢您的支持!
意见/建议
提交建议

springmvc 使用 response 的注意事项以及解决500 空指针异常找不到 response 的方法

来源:恒创科技 编辑:恒创科技编辑部
2022-08-18 14:28:06


springmvc 使用 response 的注意事项以及解决500 空指针异常找不到 response 的方法

使用注解方式在类中(Controller)来装载request时,是可以正常使用request的(必须在启动时才注入,所以不支持热部署),但是同样使用这种方式在已经装载了request的情况下装载response时却导致找不到response 500空指针异常

@Autowired
HttpServletRequest request;

因为Request 和 Response 都是针对一次请求的

如果只用@Autowired 或者@Resource 注解,依赖都是在应用启动时注入的,当应用启动的时候请求还没来,所以还没有 Request和Response对象。
所以当需要Request 和Response对象时,需要将其放到controller的方法的参数中,这样每次请求时,Spring MVC框架就会自动将HttpServeletRequest 或 HttpServeletResponse对象注入。

Request对象表示一次请求,里面包含了本次请求的所有信息,包括Http Header和 Body,
Response对象表示对请求的响应,可以设置响应的header和body

但是如果要使用response,那么就不要在类中(Controller)使用@Autowired来装载request或者 request和response,前者是为了避免在方法中传入request和response时起冲突,后者是因为这样装载的response是不能使用的,所以在springmvc中使用response要满足以下条件:

1.不要使用@Autowired来装载request或者 request和response

2.因为@Autowired不支持热部署,所以对request和response的修改不能实时查看,所以在需要修改并实时查看的场景不使用@Autowired 来装载request或者 request和response

3.必须同时在方法中传入request和response,像这样

public

如果是用的@Autowired来装载的request,用方法注入的response,或者request和response都是用@Autowired来装载的,这些情况下都会导致 500,空指针异常,即找不到response,所以必须同时在方法中传入request和response,这样就可以正常使用response和request了。



上一篇: 租用美国服务器:潜在的风险与应对策略。 下一篇: 使用网页预加载顶部进度条