ServletInputStream不支持重复读

问题描述

  准备构建异构语言API系统,采取spring mvc+http+json,用json格式,如何添加签名校验?
  想设计添加一个拦截器interceptor,在拦截器里面,解析json请求字符串,统一添加签名校验.
  问题难点,Java HttpServeletRequest的ServletInputStream的markSupported()方法返回false,所以stream不支持reset方法,不支持重复读。
  如果interceptor中读取了Stream内容,在controller这一层,就获取不到参数和请求内容。所以,要解决stream重复读。
解决方案推荐
  1. 使用HttpServletRequestWrapper对HttpServletRequest进行封装,对getInputSteam方法重写,允许多次重复read
    [http://www.programcreek.com/java-api-examples/javax.servlet.http.HttpServletRequestWrapper]
    [http://blog.csdn.net/it_man/article/details/7556903]

  2. 使用spring mvc + http + form-data

  3. 使用spring mvc + https + json

你可能感兴趣的:(ServletInputStream不支持重复读)