最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解Spring MVC3返回JSON數(shù)據(jù)中文亂碼問題解決

 更新時(shí)間:2017年01月06日 11:35:58   作者:CBDoctor  
本篇文章主要介紹了Spring MVC3返回JSON數(shù)據(jù)中文亂碼問題解決,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

查了下網(wǎng)上的一些資料,感覺比較復(fù)雜,這里,我這幾使用兩種很簡(jiǎn)單的辦法解決了中文亂碼問題。

Spring版本:3.2.2.RELEASE

Jackson JSON版本:2.1.3

解決思路:Controller的方法中直接通過response向網(wǎng)絡(luò)流寫入String類型的json數(shù)據(jù)。

使用 Jackson 的 ObjectMapper 將Java對(duì)象轉(zhuǎn)換為String類型的JSON數(shù)據(jù)。

為了避免中文亂碼,需要設(shè)置字符編碼格式,例如:UTF-8、GBK 等。

代碼如下:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

import com.fasterxml.jackson.databind.ObjectMapper; //Jsckson JSON Processer

import java.util.*;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.*;
import java.io.PrintWriter;
import java.nio.charset.Charset;

/**
 * Created with IntelliJ IDEA 12.0
 * Date: 2013-03-15
 * Time: 16:17
 */
@Controller
public class HomeController {
  @RequestMapping(value="/Home/writeJson", method=RequestMethod.GET)
  public void writeJson(HttpServletResponse response)
  {
    ObjectMapper mapper = new ObjectMapper();

    HashMap<String,String> map = new HashMap<String,String>();
    map.put("1","張三");
    map.put("2","李四");
    map.put("3","王五");
    map.put("4", "Jackson");

    String json = "";

    try
    {
      json = mapper.writeValueAsString(map);
      System.out.println(json);

      //方案二
      ServletOutputStream os = response.getOutputStream(); //獲取輸出流
      os.write(json.getBytes(Charset.forName("GBK"))); //將json數(shù)據(jù)寫入流中
      os.flush();

      //方案一
      response.setCharacterEncoding("UTF-8"); //設(shè)置編碼格式
      response.setContentType("text/html");  //設(shè)置數(shù)據(jù)格式
      PrintWriter out = response.getWriter(); //獲取寫入對(duì)象
      out.print(json); //將json數(shù)據(jù)寫入流中
      out.flush();
    }
    catch(Exception e)
    {
      e.printStackTrace();
    }

    //return "home";
  }
}

還有一種方法:設(shè)置 @RequestMapping 的 produces 參數(shù),代碼如下所示:

思路:使用 @ResponseBody 注解直接返回json字符串,為了防止中文亂碼,將@RequestMapping 的 produces 參數(shù)設(shè)置成"text/html;charset=UTF-8" 即可。

@RequestMapping(value="/Home/writeJson", method=RequestMethod.GET, produces = "text/html;charset=UTF-8")
@ResponseBody
public Object writeJson(HttpServletResponse response)
{
    ObjectMapper mapper = new ObjectMapper();

    HashMap<String,String> map = new HashMap<String,String>();
    map.put("1","張三");
    map.put("2","李四");
    map.put("3","王五");
    map.put("4", "Jackson");

    String json = "";

    try
    {
      json = mapper.writeValueAsString(map);
      System.out.println(json);
    }
    catch(Exception e)
    {
      e.printStackTrace();
    }

    return json;
}

運(yùn)行結(jié)果如下圖所示:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • java實(shí)現(xiàn)多線程交替打印兩個(gè)數(shù)

    java實(shí)現(xiàn)多線程交替打印兩個(gè)數(shù)

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)多線程交替打印兩個(gè)數(shù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • maven package 打包報(bào)錯(cuò) Failed to execute goal的解決

    maven package 打包報(bào)錯(cuò) Failed to execute goal的解決

    這篇文章主要介紹了maven package 打包報(bào)錯(cuò) Failed to execute goal的解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • SpringBoot整合HikariCP數(shù)據(jù)庫(kù)連接池方式

    SpringBoot整合HikariCP數(shù)據(jù)庫(kù)連接池方式

    這篇文章主要介紹了SpringBoot整合HikariCP數(shù)據(jù)庫(kù)連接池方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • SpringBoot+mybatis實(shí)現(xiàn)多數(shù)據(jù)源支持操作

    SpringBoot+mybatis實(shí)現(xiàn)多數(shù)據(jù)源支持操作

    這篇文章主要介紹了SpringBoot+mybatis實(shí)現(xiàn)多數(shù)據(jù)源支持操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • 淺析Java設(shè)計(jì)模式編程中的單例模式和簡(jiǎn)單工廠模式

    淺析Java設(shè)計(jì)模式編程中的單例模式和簡(jiǎn)單工廠模式

    這篇文章主要介紹了淺析Java設(shè)計(jì)模式編程中的單例模式和簡(jiǎn)單工廠模式,使用設(shè)計(jì)模式編寫代碼有利于團(tuán)隊(duì)協(xié)作時(shí)程序的維護(hù),需要的朋友可以參考下
    2016-01-01
  • springboot過濾器執(zhí)行兩次的解決及跨域過濾器問題

    springboot過濾器執(zhí)行兩次的解決及跨域過濾器問題

    這篇文章主要介紹了springboot過濾器執(zhí)行兩次的解決及跨域過濾器問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Java獲取請(qǐng)求頭、參數(shù)、路徑方式

    Java獲取請(qǐng)求頭、參數(shù)、路徑方式

    這篇文章主要介紹了Java獲取請(qǐng)求頭、參數(shù)、路徑方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • SpringBoot 動(dòng)態(tài)配置Profile環(huán)境的方式

    SpringBoot 動(dòng)態(tài)配置Profile環(huán)境的方式

    這篇文章主要介紹了SpringBoot 動(dòng)態(tài)配置Profile環(huán)境的方式,本文通過圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-10-10
  • Java 數(shù)組交集的實(shí)現(xiàn)代碼

    Java 數(shù)組交集的實(shí)現(xiàn)代碼

    這篇文章主要介紹了Java 數(shù)組交集的實(shí)現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • JavaWeb中的filter過濾敏感詞匯案例詳解

    JavaWeb中的filter過濾敏感詞匯案例詳解

    敏感詞、文字過濾是一個(gè)網(wǎng)站必不可少的功能,本篇文章主要介紹了JavaWeb中的filter過濾敏感詞匯案例,具有一定的參考價(jià)值,有需要的可以了解一下,
    2016-11-11

最新評(píng)論

石首市| 广西| 白水县| 长宁县| 海淀区| 随州市| 庆阳市| 教育| 张家口市| 合肥市| 青冈县| 成武县| 平江县| 栖霞市| 营口市| 巢湖市| 浪卡子县| 无为县| 伊春市| 临泉县| 苏州市| 建昌县| 台东市| 夹江县| 尚志市| 道孚县| 三台县| 象山县| 察雅县| 江达县| 鄂托克前旗| 朝阳市| 阿坝县| 承德县| 恩平市| 天峻县| 桐城市| 沐川县| 大厂| 大石桥市| 安顺市|