spring MVC 利用拦截器或者或者过滤器 修改返回值有搞过的吗

解决方案 »

  1.   

    Spring MVC 在使用 @ResponseBody 注解以后 不能再拦截器中获取 response 中的返回值   有遇到过的吗?
      

  2.   

    这个是  request  不是  response  的啊~  而且springMVC 对 response   的返回值做了封装
      

  3.   

    打个 response是你返回的数据,你自己可以修改和拦截什么关系。
      

  4.   

     因为是手机APP项目所以是想做到 把返回的数据 整体加密  免得被破译,现在就是返回值取不到~ 尴尬
      

  5.   

     因为是手机APP项目所以是想做到 把返回的数据 整体加密  免得被破译,现在就是返回值取不到~ 尴尬参考这个代码
      

  6.   

    修改返回值,单纯拦截器或过滤器很难做到,aop可以
      

  7.   

    +1,注解配置的Controller里的方法,@Aspect是能切到的。环绕增强可以替换原有的返回值
      

  8.   

    楼主,你的问题解决了吗?我现在也遇到你和你一样的问题,想在拦截器afterCompletion方法中统一加密、
      

  9.   

    序列化用的什么库?一般情况下用fastjson的就是FastJsonHttpMessageConverter,用jackson就是MappingJacksonHttpMessageConverter
    继承这个类,然后重写writeInternal即可,比如下面的是fastjson的,Object obj是你要序列化的对象,你想干啥就能干啥,是否理解?jackson也是类似,自己看下源码稍作修改即可 protected void writeInternal(Object obj, HttpOutputMessage outputMessage)
    throws IOException, HttpMessageNotWritableException {
            HttpHeaders headers = outputMessage.getHeaders();
            OutputStream out = outputMessage.getBody();
            int len = JSON.writeJSONString(out, //
                                           fastJsonConfig.getCharset(), //
                                           obj, //
                                           fastJsonConfig.getSerializeConfig(), //
                                           fastJsonConfig.getSerializeFilters(), //
                                           fastJsonConfig.getDateFormat(), //
                                           JSON.DEFAULT_GENERATE_FEATURE, //
                                           fastJsonConfig.getSerializerFeatures());
            headers.setContentLength(len);
        }
      

  10.   

    如果还不理解,就搜下HttpMessageConverter
    大概了解下springmvc序列化的实现
      

  11.   

    AOP了解下