2013-08-16 5 views
0

Каким будет возможное решение, если я хочу подписать исходящий ответ, используя Sprut Dispatcher Servlet, используя MappingJacksonConverter.DispatcherServlet sign outgoing response

Моя цель - добавить md5 содержимого тела в заголовке, чтобы подтвердить ответ.

Я не могу получить доступ к заголовкам после прочтения ответа.

Каковы предложения?

ответ

0

Раствор для подписания его так, как вы хотите это сделать следующее:

Создание сервлета Filter, что облегает HttpServletResponse объект в реализации, который записывает временную ByteArrayOutputStream и не промывочной заголовки/содержание. Когда Filter возвращается с doFilter, вы получаете bytes от ByteArrayOutputStream, кормите их, чтобы вычислить хэш MD5, добавить заголовок ответа, а затем сбросить ответ.

0

Вы можете написать свой собственный класс Conventer для составления карт. В моем проекте я использую MappingJackson2HttpMessageConverter с jackson2 в пути к классам. Я приведу пример, чтобы показать, как добавить заголовок, когда сообщение ответа в конвент.

Во-первых, экстентов MappingJackson2HttpMessageConverter класса

public class MyMappingJackson2HttpMessageConverter extends MappingJackson2HttpMessageConverter { 
    @Override 
    protected void writeInternal(Object object, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException { 
     outputMessage.getHeaders().add("code", DigestUtils.md5Hex(object.toString())); 
     // add header before write body content 
     super.writeInternal(object, outputMessage); // convent whatever you can 

    } 
} 

Затем добавить свой собственный Conventer класс компонента для Spring-MVC конфигурационный файл

<mvc:annotation-driven> 
    <mvc:message-converters register-defaults="true"> 
     <bean class="com.xxx.utils.MyMappingJackson2HttpMessageConverter"> 
     </bean> 
    </mvc:message-converters> 
</mvc:annotation-driven> 

И это заголовки ответа, например выше

HTTP/1.1 200 OK 
Content-Type: application/json;charset=UTF-8 
code: 84fd2e9b2adc2f5be0b53a3ff7f1492b 
Transfer-Encoding: chunked 
Server: Jetty(7.6.8.v20121106) 
Смежные вопросы