后台接收到请求后,可以通过流的方式读取参数,并将参数封装在PageParam对象中同一管理,方便使用
当然请求头、路径参数可以通过HttpServletRequest的get方法获取,一并封装到PageParam对象
废话不多说,直接上代码
@Controller
public class UserController{
@RequestMapping("/user")
public void handlePageEvent(HttpServletRequest request, HttpServletResponse response, @RequestParam(value = "file", required = false) MultipartFile file){
//读到请求后,在PageParam对象构造中解析request参数
PageParam pageParam = new PageParam(request, file);
System.out.println(pageParam.toString());
}
}
接下来主要看PagaParam初始化过程
public class PageParam{
private String referer;
private String token;
private String ip;
private JSONObject bodyData;
public PageParam(HttpServletRequest request, @RequestParam(value = "file", required = false) MultipartFile file){
//通过getHeader方法获取请求头中部分信息,比如Referer、token等
this.referer = request.getHeader("Referer");
this.token = request.getHeader("token");
//获取请求ip,这个地址是真实地址(可以防止伪地址篡改)
this.ip = request.getRemoteAddr();
//通过getParamter方法获取请求的路径参数
String value = request.getParameter("路径参数的key");
try{
//通过流读取请求体的内容
InputStreamReader isr = new InputStreamReader(request.getInputStream());
StringBuffer sb = new StringBuffer();
BufferReader br = new BufferReader(isr);
String readBody = "";
while((readBody = br.readLine()) != null){
sb.append(readBody);
}
this.bodyData = JSONObject.parseObject(sb.toString());
}
//文件内容
if(file != null){
this.bodyData.put("file", file);
}
}
}
通过上述方式就可以直接使用PageParam对象的参数了,若有不足请大佬批评指正。