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

Spring MVC 關(guān)于controller的字符編碼問題

 更新時(shí)間:2017年03月23日 09:38:03   投稿:zx  
在使用springMVC框架構(gòu)建web應(yīng)用,客戶端常會(huì)請(qǐng)求字符串、整型、json等格式的數(shù)據(jù),通常使用@ResponseBody注解使 controller回應(yīng)相應(yīng)的數(shù)據(jù)而不是去渲染某個(gè)頁面。

在使用springMVC框架構(gòu)建web應(yīng)用,客戶端常會(huì)請(qǐng)求字符串、整型、json等格式的數(shù)據(jù),通常使用@ResponseBody注解使 controller回應(yīng)相應(yīng)的數(shù)據(jù)而不是去渲染某個(gè)頁面。如果請(qǐng)求的是非英文格式的字符串,往往在客戶端顯示的是亂碼。原因是spring的 StringHttpMessageConverter默認(rèn)的字符類型是iso8895-1 ‘西歐語言’,中文等字符需要單獨(dú)指定。

這里總結(jié)幾種解決方案:

1.不使用@ResponseBody注解,使用HttpServeletResponse設(shè)置contentType屬性

@RequestMapping(value ="/rest/create/document") 
public void create(Document document, HttpServletRespone respone) { 
repoonse.setContentType("text/plain;charset='utf-8'"); 
response.write("中文string"); 
}

2.返回Response Entity object,設(shè)置contentType,例:

@RequestMapping(value = "/rest/create/document") public ResponseEntity<String> create(Document document, HttpServletRespone respone) { 
HttpHeaders responseHeaders = new HttpHeaders(); responseHeaders.add("Content-Type", "text/html; charset=utf-8"); 
Document newDocument = DocumentService.create(Document); 
String json = jsonSerializer.serialize(newDocument); 
return new ResponseEntity<String>(json, responseHeaders, HttpStatus.OK); 
}

3.使用produces屬性:

@RequestMapping(value = "/rest/create/document",produces= "text/plain;charset=UTF-8") //返回的內(nèi)容類型
@ResponseBody 
public String create(Document document, HttpServletRespone respone) throws UnsupportedEncodingException { 
Document newDocument = DocumentService.create(Document); 
return jsonSerializer.serialize(newDocument); 
}

@RequestMapping

參數(shù)綁定(@RequestParam、 @RequestBody、 @RequestHeader 、 @PathVariable)

package org.springframework.web.bind.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.springframework.web.bind.annotation.Mapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Mapping
public @interface RequestMapping {
  String name() default "";

  String[] value() default {};

  RequestMethod[] method() default {};

  String[] params() default {};

  String[] headers() default {};

  String[] consumes() default {};

  String[] produces() default {};
}

RequestMapping是一個(gè)用來處理請(qǐng)求地址映射的注解,可用于類或方法上。用于類上,表示類中的所有響應(yīng)請(qǐng)求的方法都是以該地址作為父路徑。

RequestMapping注解有六個(gè)屬性。

1、value, method;

value: 指定請(qǐng)求的實(shí)際地址,指定的地址可以是URI Template 模式(后面將會(huì)說明);

method: 指定請(qǐng)求的method類型, GET、POST、PUT、DELETE等;

2、consumes,produces;

consumes: 指定處理請(qǐng)求的提交內(nèi)容類型(Content-Type),例如application/json, text/html;

produces: 指定返回的內(nèi)容類型,僅當(dāng)request請(qǐng)求頭中的(Accept)類型中包含該指定類型才返回;

3、params,headers;

params: 指定request中必須包含某些參數(shù)值是,才讓該方法處理。

headers: 指定request中必須包含某些指定的header值,才能讓該方法處理請(qǐng)求。

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

相關(guān)文章

  • SpringBoot集成Redis—使用RedisRepositories詳解

    SpringBoot集成Redis—使用RedisRepositories詳解

    這篇文章主要介紹了SpringBoot集成Redis—使用RedisRepositories詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java實(shí)現(xiàn)雙鏈表互相交換任意兩個(gè)節(jié)點(diǎn)的方法示例

    Java實(shí)現(xiàn)雙鏈表互相交換任意兩個(gè)節(jié)點(diǎn)的方法示例

    這篇文章主要介紹了Java實(shí)現(xiàn)雙鏈表互相交換任意兩個(gè)節(jié)點(diǎn)的方法,簡(jiǎn)單講述了雙鏈表的概念,并結(jié)合實(shí)例形式給出了java雙鏈表實(shí)現(xiàn)任意兩個(gè)節(jié)點(diǎn)交換的操作技巧,需要的朋友可以參考下
    2017-11-11
  • 詳解Spring Boot 中實(shí)現(xiàn)定時(shí)任務(wù)的兩種方式

    詳解Spring Boot 中實(shí)現(xiàn)定時(shí)任務(wù)的兩種方式

    這篇文章主要介紹了Spring Boot 中實(shí)現(xiàn)定時(shí)任務(wù)的兩種方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 梳理總結(jié)Java?static關(guān)鍵字的方法作用

    梳理總結(jié)Java?static關(guān)鍵字的方法作用

    這篇文章主要介紹了梳理總結(jié)Java?static關(guān)鍵字的方法作用,?static?關(guān)鍵字可以用來修飾的成員變量和成員方法,被修飾的成員是屬于類的,而不是單單是屬于某個(gè)對(duì)象的
    2022-06-06
  • Linux系統(tǒng)下安裝和卸載JDK8的方式

    Linux系統(tǒng)下安裝和卸載JDK8的方式

    這篇文章主要介紹了Linux安裝和卸載JDK8,第一種是使用yum命令一鍵安裝,默認(rèn)安裝目錄在/usr/lib/jvm第二種是手動(dòng)安裝,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-09-09
  • java棧實(shí)現(xiàn)二叉樹的非遞歸遍歷的示例代碼

    java棧實(shí)現(xiàn)二叉樹的非遞歸遍歷的示例代碼

    這篇文章主要介紹了java棧實(shí)現(xiàn)二叉樹的非遞歸遍歷,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • java實(shí)現(xiàn)在線預(yù)覽--poi實(shí)現(xiàn)word、excel、ppt轉(zhuǎn)html的方法

    java實(shí)現(xiàn)在線預(yù)覽--poi實(shí)現(xiàn)word、excel、ppt轉(zhuǎn)html的方法

    這篇文章主要介紹了java實(shí)現(xiàn)在線預(yù)覽--poi實(shí)現(xiàn)word、excel、ppt轉(zhuǎn)html的方法,本文需要引入poi的jar包給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2019-09-09
  • Java對(duì)稱加密算法DES實(shí)例詳解

    Java對(duì)稱加密算法DES實(shí)例詳解

    這篇文章主要介紹了Java對(duì)稱加密算法DES,結(jié)合實(shí)例形式詳細(xì)分析了java DES算法的概念、原理、實(shí)現(xiàn)方法與應(yīng)用場(chǎng)景,需要的朋友可以參考下
    2019-09-09
  • SpringBoot集成H2內(nèi)存數(shù)據(jù)庫的方法

    SpringBoot集成H2內(nèi)存數(shù)據(jù)庫的方法

    H2是Thomas Mueller提供的一個(gè)開源的、純java實(shí)現(xiàn)的關(guān)系數(shù)據(jù)庫。本文主要介紹了SpringBoot集成H2內(nèi)存數(shù)據(jù)庫,具有一定的參考價(jià)值,感興趣的可以了解一下
    2021-09-09
  • 詳談@Cacheable不起作用的原因:bean未序列化問題

    詳談@Cacheable不起作用的原因:bean未序列化問題

    這篇文章主要介紹了@Cacheable不起作用的原因:bean未序列化問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01

最新評(píng)論

巩留县| 浠水县| 安福县| 育儿| 灵璧县| 花垣县| 康马县| 抚宁县| 朔州市| 沈丘县| 永嘉县| 澄江县| 巩留县| 密云县| 泽库县| 石棉县| 南通市| 比如县| 阜新市| 沙坪坝区| 于都县| 威信县| 江门市| 德庆县| 嵊泗县| 余江县| 新绛县| 兴城市| 武山县| 凌海市| 泾川县| 磐安县| 昌吉市| 玛沁县| 五河县| 扶风县| 错那县| 沛县| 鄂托克旗| 德保县| 盐城市|