SpringBoot三种获取Request和Response的方法
1.通过静态方法获取,也可以封装一个静态方法出来
@PostMapping("/export")
public void export(@Requestbody List<E> list) {
ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
HttpServletRequest request = servletRequestAttributes.getRequest();
HttpServletResponse response = servletRequestAttributes.getResponse();
//...
}
2.通过参数直接获取,只要在方法上加上参数,Springboot就会绑定,可以直接使用。如果方法有其他参数,把这两个加到后面即可。
@PostMapping("/export")
public String export(@Requestbody List<E> list,HttpServletRequest request,HttpServletResponse response) {
//...
}
3.注入到类,这样就不用每个方法都写了
@Autowired
private HttpServletRequest request;
@Autowired
private HttpServletResponse response;
@GetMapping(value = "")
public String export() {
//...
}
本来采用的第二种方法,但是一直报"getOutputStream() has already been called for this response"异常,采用的第一种方法,解决了