Java Web项目中Spring框架处理JSON格式数据的方法

json是一种常见的传递格式,是一种键值对应的格式。并且数据大小会比较小,方便传递。所以在开发中经常会用到json。

首先看一下json的格式:

{key1:value1,key2:value2}

每一个建对应一个值,每个键值对之间用逗号连接。并且最后一个键值对之后没有逗号,整体需要有大括号括起来。

一般正常的servlet返回json时,会像下面这样:

response.setContentType("text/JSON;charset=utf-8");
response.getWriter().print(gson.toJson(page));
response.getWriter().flush();
response.getWriter().close();
return null;

这样相对来说比较麻烦,也不好封装。新版spring返回json时,可以通过@ResponseBody直接返回,这点做得很不错,大概代码如下:

@Controller
@RequestMapping("/json")
public class JsonController {
  @RequestMapping(value="{provinceId}",method = RequestMethod.GET)
  @ResponseBody
  public String pagination(@PathVariable String provinceId){
    return getJsonData(provinceId);
  }
}

访问方式如下:http://localhost:8080/spring3/action/json/1,有一点需要注意下,那就是访问spring mvc的controller时中间加了个/action,那是因为DispatcherServlet的映射路径如果直接使用/*的话,会将相应的jsp屏蔽掉,所以一定得加个前缀以区别jsp与controller.

上面的json中如果有中文的话,会出现乱码,所以则修改spring-servlet.xml配置文件,修改下AnnotationMethodHandlerAdapter的messageConverters即可,因为其默认采用的iso8895-1的编码,代码如下:

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
    <property name="webBindingInitializer">
      <bean class="com.mvc.commons.CommonsBindingInitializer" />
    </property>

    <property name="messageConverters">
      <list>
      <bean class="org.springframework.http.converter.StringHttpMessageConverter">
          <property name="supportedMediaTypes">
            <list>
              <value>text/plain;charset=UTF-8</value>
            </list>
          </property>
        </bean>
      </list>
    </property>
  </bean>

经过这些步骤后,对json的处理就相当方便了。

(0)

相关推荐

  • 深入解析Java的Spring框架中bean的依赖注入

    每一个基于java的应用程序都有一个共同工作来展示给用户看到的内容作为工作的应用几个对象.当编写一个复杂的Java应用程序,应用程序类应该尽可能独立其他Java类来增加重复使用这些类,并独立于其他类别的测试它们,而这样做单元测试的可能性.依赖注入(或有时称为布线)有助于粘合这些类在一起,同时保持他们的独立. 考虑有其中有一个文本编辑器组件的应用程序,要提供拼写检查.标准的代码将看起来像这样: public class TextEditor { private SpellChecker spell

  • JavaWeb Spring依赖注入深入学习

    一.依赖注入(DI) 依赖注入听起来很高深的样子,其实白话就是:给属性赋值.一共有两种方法,第一是以构造器参数的形式,另外一种就是以setting方法的形式. 1 构造器注入 1 使用构造器注入 使用xml的注入方式 A. 通过参数的顺序 <constructor-arg index="0"><value>张三</value></constructor-arg> <constructor-arg index="1"

  • Java Web程序中利用Spring框架返回JSON格式的日期

    返回Json时格式化日期Date 第一步:创建CustomObjectMapper类 /** * 解决SpringMVC使用@ResponseBody返回json时,日期格式默认显示为时间戳的问题.需配合<mvc:message-converters>使用 */ @Component("customObjectMapper") public class CustomObjectMapper extends ObjectMapper { public CustomObject

  • Java简单实现SpringMVC+MyBatis分页插件

    1.封装分页Page类 package com.framework.common.page.impl; import java.io.Serializable; import com.framework.common.page.IPage; /** * * * */ public abstract class BasePage implements IPage, Serializable { /** * */ private static final long serialVersionUID

  • java中实现兼容ie6 7 8 9的spring4+websocket

    效果 不支持websocket的浏览器,用flash模拟websocket.当然,也可以用flash socket直接与服务端socket连接. 事实上,websocket协议比较简单,用actionscript模拟也比较简单,这个在本屌的另外一篇文章让ie6 7 8 9支持html5 websocket简单说了下. 另外,spring为sockjs 提供api,只需简单配置下,就可以兼容低版本浏览器,原理是用js模拟websocket object.具体的本屌还没有去看. 几点说明: 1.使用

  • java Spring整合Freemarker的详细步骤

    我的開發環境框架:springmvc開發工具:springsource-tool-suite-2.9.0版本:1.6.0_29tomcat版本:apache-tomcat-7.0.26前言:FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出.FreeMarker与Web容器无关,即在Web运行时,它并不知道Servlet或HTTP.它不仅可以用作表现层的实现技术,而且还可以用于生成XML,JSP或Java 等.簡而言之,Freemarker就是在Jave Web開發

  • 详解Java Spring各种依赖注入注解的区别

    注解注入顾名思义就是通过注解来实现注入,Spring和注入相关的常见注解有Autowired.Resource.Qualifier.Service.Controller.Repository.Component. Autowired是自动注入,自动从spring的上下文找到合适的bean来注入 Resource用来指定名称注入 Qualifier和Autowired配合使用,指定bean的名称 Service,Controller,Repository分别标记类是Service层类,Contro

  • JavaWeb Spring开发入门深入学习

    1 Spring基本特征 Spring是一个非常活跃的开源框架:它是一个基于Core来构架多层JavaEE系统的框架,它的主要目地是简化企业开发. Spring以一种非侵入式的方式来管理你的代码,Spring提倡"最少侵入",这也就意味着你可以适当的时候安装或卸载Spring,Spring让java亮了. (开放–闭合原理),这里是闭原则. 2 开发spring所需要的工具 (这里先将spring2.5 ,后面3.0) 2.1 Spring的jar包 到http://www.sprin

  • 实例讲解Java的Spring框架中的控制反转和依赖注入

    近来总是接触到 IoC(Inversion of Control,控制反转).DI(Dependency Injection,依赖注入)等编程原则或者模式,而这些是著名 Java 框架 Spring.Struts 等的核心所在.针对此查了 Wikipedia 中各个条目,并从图书馆借来相关书籍,阅读后有些理解,现结合书中的讲解以及自己的加工整理如下: eg1 问题描述: 开发一个能够按照不同要求生成Excel或 PDF 格式的报表的系统,例如日报表.月报表等等.   解决方案: 根据"面向接口编

  • JavaWeb项目中springmvc和tomcat对静态文件的处理

    1.激活Tomcat的defaultServlet来处理静态文件,web.xml配置 <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.js</url-pattern> </servlet-mapping> a.说到了这里另外说说url-pattern的配置 <!--url-pattern的三种写法--> <!--精确匹配:以&

随机推荐