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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • =========================================================...
    _灯火阑珊处阅读 2,485评论 0 3
  • 这部分主要是与Java Web和Web Service相关的面试题。 96、阐述Servlet和CGI的区别? 答...
    杂货铺老板阅读 1,438评论 0 10
  • 要加“m”说明是MB,否则就是KB了. -Xms:初始值 -Xmx:最大值 -Xmn:最小值 java -Xms8...
    dadong0505阅读 4,951评论 0 53
  • 1、面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: -- 抽象:抽象是将一类对象的共同特征总结...
    ccc_74bd阅读 1,004评论 0 1
  • 一. Java基础部分.................................................
    wy_sure阅读 3,854评论 0 11