`
tq02ksu
  • 浏览: 51779 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

spring mvc 3.0 json 操作中定制 http header.

阅读更多
大家都知道spring mvc 3.0中的JSON 响应用起来很方便的, 用@ResponseBody 标记, 然后handler 的方法的返回值设为Object. 但是现在的问题是这样不能够定制Http header.

    之前有网友称使用HttpEntity. 具体怎么用我也不清楚, 只是个人感觉用起来不够优雅. 所以就有了这个文章, 经过一翻尝试. 笔者实现了定制Http 响应头中的缓存信息, 不设这个的话傻傻的IE7 会把AJAX 请求作缓存. 非常讨厌.

    具体实现方法是继承org.springframework.http.converter.json.MappingJacksonHttpMessageConverter, 如下是我的代码
import java.io.IOException;

import org.springframework.http.HttpOutputMessage;
import org.springframework.http.converter.HttpMessageNotWritableException;
import org.springframework.http.converter.json.MappingJacksonHttpMessageConverter;

public class NoCacheMappingJacksonHttpMessageConverter extends
		MappingJacksonHttpMessageConverter {

	@Override
	protected void writeInternal(Object o, HttpOutputMessage outputMessage)
			throws IOException, HttpMessageNotWritableException {
		outputMessage.getHeaders().set("Cache-Control", "no-cache");
		super.writeInternal(o, outputMessage);
	}
}



当然也少不了dispatcher-servlet.xml中的配置:
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
        <property name="messageConverters">
            <list>
                <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                    <property name="supportedMediaTypes">
                        <list>
                            <bean class="org.springframework.http.MediaType">
                                <constructor-arg value="text"/>
                                <constructor-arg value="plain"/>
                                <constructor-arg value="utf8"/>
                            </bean>
                        </list>
                    </property>
                </bean>
                <!-- 
                <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/>
                 -->
                <bean class="com.fpi.mespvc.web.util.NoCacheMappingJacksonHttpMessageConverter"/>
            </list>
        </property>
    </bean>


笔者亲测. 完全好用.
分享到:
评论
3 楼 jd2bs 2012-11-19  
奇怪,我在spring3.1.2中 这样不行  response header 没加上
public class wbxJacksonMessageConverter extends MappingJacksonHttpMessageConverter {

	@Override  
    protected void writeInternal(Object o, HttpOutputMessage outputMessage)  
            throws IOException, HttpMessageNotWritableException {  
        outputMessage.getHeaders().set("Cache-Control", "no-cache");
        outputMessage.getHeaders().set("Access-Control-Allow-Headers", "Origin, x-requested-with, content-type, accept");
        super.writeInternal(o, outputMessage);  
    }  
}




	<bean
		class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />

	<bean
		class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> 
		<property name="messageConverters">  
          
            <ref bean="mappingJacksonHttpMessageConverter"/>  
          
        </property>  
    </bean>  
   <bean id="mappingJacksonHttpMessageConverter" class="com.***.util.wbxJacksonMessageConverter">  
    <property name="supportedMediaTypes">  
        <list>  
            <value>text/html;charset=UTF-8</value>
            <value>application/json;charset=UTF-8</value>
        </list>  
    </property>  
   </bean>  
  <context:annotation-config/> 



 
2 楼 tq02ksu 2011-07-06  
要把IE的缓存清一下才能有效的.
再不灵的话用FF看一下 HTTP 影响头.
有没有Cache-Control: no-cache.
1 楼 x163maiyatang 2011-07-01  
问下  我遇到的 就是这种问题   在ie情况下  就会缓存数据  但是像你那样配置还是 不好用        !!

相关推荐

    Spring_MVC_3.0实战指南

    ### Spring MVC 3.0 实战指南 #### Spring MVC 框架简介 Spring MVC 是 Spring Framework 的一个重要组成部分,主要用于构建基于 Java 的 Web 应用程序。它是一种基于 Model-View-Controller (MVC) 设计模式的轻量...

    spring3MVC.pdf

    根据给定的文件信息,我们将深入探讨Spring 3.0 MVC框架的核心概念、架构与实践。Spring MVC是Spring框架的一部分,专门用于构建基于Java的Web应用程序。它提供了一个灵活且强大的模型-视图-控制器(Model-View-...

    spring第11章--ajax,上传下载,拦截器.rar_spring mvc_spring 下载_spring 使用ajax

    在Spring MVC框架中,Ajax(Asynchronous JavaScript and XML)是一种常用的技术,用于在不刷新整个页面的情况下与服务器进行异步通信。本章将探讨如何在Spring MVC中集成和使用Ajax,以及涉及的上传和下载功能,...

    Spring MVC

    ### Spring MVC 3.0+ 入门教程 #### 一、引言 Spring MVC 是一个基于 Spring 平台的模型-视图-控制器(Model-View-Controller, MVC)框架,它为开发者提供了一种构建清晰、可维护性强且易于测试的 Web 应用程序的...

    spring 3.1 mvc sample

    5. **Message Converters**:Spring MVC提供了一组内置的消息转换器,用于将HTTP请求体和响应体与Java对象之间进行自动转换,如MappingJackson2HttpMessageConverter处理JSON格式。 6. **ModelAndView Enhancements...

    Spring MVC之@RequestMapping详解

    在Java Web开发中,Spring MVC框架因其强大的功能和灵活性而备受青睐。在处理HTTP请求时,@RequestMapping注解扮演着至关重要的角色,它负责将客户端的请求映射到控制器中的具体方法。本文将深入探讨@RequestMapping...

    springMVC注解+ security + redis 实例

    在IT行业中,Spring MVC、Spring Security和Redis是三个非常重要的技术组件,它们分别在Web开发、权限管理和数据缓存方面发挥着关键作用。下面将详细解释这三个技术以及它们如何协同工作。 **Spring MVC** Spring ...

    renren-fast开发文档3.0_完整版.pdf

    用户登录成功后生成唯一Token,并将其放置于HTTP Header中,用于后续请求的身份验证。 - **数据格式**:数据传输主要采用JSON格式,保证了数据的轻量化和易于解析。 **1.4 开发环境搭建** - **软件需求**:需要...

    spring5mvc第一天【大纲笔记】.zip

    SpringMVC 是一款由 Spring 框架衍生出的用于构建 Web 应用程序的 Model-View-Controller(MVC)框架,它极大地简化了Java Web应用的开发。本大纲笔记将带你逐步深入理解SpringMVC的核心概念和使用方法。 一、...

    SSH框架中SpringMVC

    在 Spring MVC 框架中,客户端通常通过浏览器向服务器发送 HTTP 请求,请求的目标是一个由 DispatcherServlet 配置的 URL。DispatcherServlet 是 Spring MVC 的核心组件,它负责处理所有到达应用程序的请求。 (2)...

    Spring boot 配置参数一览.pdf

    Spring Boot 是一个开源的 Java 基础框架,主要用于快速、简便地创建独立的、生产级别的基于Spring的应用程序。它使用“约定优于配置”的原则,让开发者能够更快地构建项目。Spring Boot 的配置系统非常灵活,允许...

    sping rest

    在 Spring MVC 3.0 中,开发者可以利用这些特性快速构建 RESTful 服务,实现服务的轻量化、松耦合以及跨平台通信。随着版本的更新,Spring Rest 功能越来越强大,包括支持 CORS(跨域资源共享)、WebFlux(反应式...

    java开发常用jar包

    该资源包含以下jar包: commons-codec-1.6.jar commons-logging-1.1.1.jar fluent-hc-4.2.5.jar ... spring-webmvc-4.0.0.RELEASE.jar standard.jar struts2-core-2.3.24.jar xwork-core-2.3.24.jar

    springMVC详解以及注解说明

    在Spring MVC框架中,注解的使用极大地简化了配置过程,使得开发者能够更加专注于业务逻辑。Spring 2.5引入了一系列注解,使得基于XML的配置可以被注解配置所替代,提高了开发效率和代码的可读性。下面将详细解释...

    SpringMVC相关jar包

    SpringMVC是Spring框架的一个模块,专为构建Web应用程序提供模型-视图-控制器(MVC)架构。它简化了Java Web开发,并提供了强大的组件和工具来处理HTTP请求、响应以及数据绑定。以下是对SpringMVC相关jar包的详细...

    Spring MVC 关于controller的字符编码问题

    总结来说,Spring MVC中处理Controller的字符编码问题主要是通过设置响应的`Content-Type`,使用`@RequestMapping`的`produces`属性,或者直接操作`HttpServletResponse`来指定字符集。同时,了解如何使用不同的参数...

    Spring拦截器,高级参数绑定

    Spring MVC中的拦截器是基于AOP(面向切面编程)原理实现的,可以理解为对Controller方法调用的预处理和后处理。下面将详细探讨Spring拦截器的使用以及高级参数绑定和Controller返回值的相关知识。 首先,我们创建...

    spring security 参考手册中文版

    12.2.3使用RequestPostProcessor在Spring MVC测试中以用户身份运行 106 作为用户在Spring MVC测试中使用注释运行 108 12.2.4测试HTTP基本认证 109 12.3 SecurityMockMvcRequestBuilders 109 12.3.1测试基于表单的...

    SpringMVC后台接收请求参数的几种方式Demo

    在Spring MVC框架中,处理HTTP请求是开发Web应用的核心任务之一。本教程将详细解析Spring MVC后台接收请求参数的多种方式。我们将重点关注GET和POST请求,这两种请求方式在Web开发中最为常见。以下是对每种方式的...

    springMVC伪静态和restful服务以及json日期格式

    requestheader:Content-Type=application/json;charset=UTF-8 requestbody:{"id":3,"username":"王五","userpwd":"123456","birthdy":"2013-11-07 02-30-44"} sql文件如下: SET FOREIGN_KEY_CHECKS=0; DROP ...

Global site tag (gtag.js) - Google Analytics