成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

SpringMVC中如何實(shí)現(xiàn)輸入或輸出json格式的文件

Spring MVC中如何實(shí)現(xiàn)輸入或輸出json格式的文件?很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括黃岡網(wǎng)站建設(shè)、黃岡網(wǎng)站制作、黃岡網(wǎng)頁制作以及黃岡網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,黃岡網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到黃岡省份的部分城市,未來相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

Spring mvc處理json需要使用jackson的類庫,因此為支持json格式的輸入輸出需要先修改pom.xml增加jackson包的引用

    <!-- json -->
    <dependency>
      <groupId>org.codehaus.jackson</groupId>
      <artifactId>jackson-core-lgpl</artifactId>
      <version>1.8.1</version>
    </dependency>

    <dependency>
      <groupId>org.codehaus.jackson</groupId>
      <artifactId>jackson-mapper-lgpl</artifactId>
      <version>1.8.1</version>
    </dependency>

先修改之前的helloworld.jsp,增加客戶端json格式的數(shù)據(jù)輸入。

  var cfg =   {
    type: 'POST', 
    data: JSON.stringify({userName:'winzip',password:'password',mobileNO:'13818881888'}), 
    dataType: 'json',
    contentType:'application/json;charset=UTF-8',    
    success: function(result) { 
      alert(result.success); 
    } 
  };

function doTestJson(actionName){
  cfg.url = actionName;
  $.ajax(cfg);
}

根據(jù)前面的分析,在spring mvc中解析輸入為json格式的數(shù)據(jù)有兩種方式 1:使用@RequestBody來設(shè)置輸入

  @RequestMapping("/json1")
  @ResponseBody
  public JsonResult testJson1(@RequestBody User u){
    log.info("get json input from request body annotation");
    log.info(u.getUserName());
    return new JsonResult(true,"return ok");
}

2:使用HttpEntity來實(shí)現(xiàn)輸入綁定 

  @RequestMapping("/json2")  
  public ResponseEntity<JsonResult> testJson2(HttpEntity<User> u){
    log.info("get json input from HttpEntity annotation");
    log.info(u.getBody().getUserName());
    ResponseEntity<JsonResult> responseResult = new ResponseEntity<JsonResult>( new JsonResult(true,"return ok"),HttpStatus.OK);
    return responseResult;
}

Json格式的輸出也對(duì)應(yīng)有兩種方式 1:使用@responseBody來設(shè)置輸出內(nèi)容為context body 2:返回值設(shè)置為ResponseEntity<&#63;>類型,以返回context body 另外,第三種方式是使用ContentNegotiatingViewResolver來設(shè)置輸出為json格式,需要修改servlet context配置文件如下

  <bean
    class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
    <property name="order" value="1" />
    <property name="mediaTypes">
      <map>
        <entry key="json" value="application/json" />
      </map>
    </property>
    <property name="defaultViews">
      <list>
        <bean
          class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" />
      </list>
    </property>
    <property name="ignoreAcceptHeader" value="true" />
  </bean>

但這種格式的輸出會(huì)返回{model類名:{內(nèi)容}} 的json格式, 例如,以下代碼

  @RequestMapping("/json3.json")
  public JsonResult testJson3(@RequestBody User u){
    log.info("handle json output from ContentNegotiatingViewResolver");
    return new JsonResult(true,"return ok");
  }

期望的返回是 {success:true,message:”return ok”}; 但實(shí)際返回的卻是 {"jsonResult":{"success":true,"msg":"return ok"}} 原因是MappingJacksonJsonView中對(duì)返回值的處理未考慮modelMap中只有一個(gè)值的情況,直接是按照mapName:{mapResult}的格式來返回?cái)?shù)據(jù)的。 修改方法,重載MappingJacksonJsonView類并重寫filterModel方法如下

  protected Object filterModel(Map<String, Object> model) { 
    Map<&#63;, &#63;> result = (Map<&#63;, &#63;>) super.filterModel(model); 
    if (result.size() == 1) { 
      return result.values().iterator().next(); 
    } else { 
      return result; 
    } 
  } 

 對(duì)應(yīng)的ContentNegotiatingViewResolver修改如下

<bean
    class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
    <property name="order" value="1" />
    <property name="mediaTypes">
      <map>
        <entry key="json" value="application/json" />
      </map>
    </property>
    <property name="defaultViews">
      <list>
        <bean
          class="net.zhepu.json.MappingJacksonJsonView" />
      </list>
    </property>
    <property name="ignoreAcceptHeader" value="true" />
  </bean>

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。

網(wǎng)頁名稱:SpringMVC中如何實(shí)現(xiàn)輸入或輸出json格式的文件
文章轉(zhuǎn)載:http://jinyejixie.com/article16/ipeggg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)、、企業(yè)網(wǎng)站制作建站公司、網(wǎng)站設(shè)計(jì)、微信公眾號(hào)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計(jì)
金平| 博白县| 绵竹市| 行唐县| 贵州省| 南宫市| 韶山市| 德昌县| 河津市| 海城市| 宁阳县| 溧阳市| 开化县| 宁阳县| 会昌县| 枞阳县| 集安市| 青阳县| 太和县| 盘山县| 巨鹿县| 谢通门县| 涪陵区| 新蔡县| 兰溪市| 二连浩特市| 玉门市| 资兴市| 怀仁县| 中山市| 石泉县| 泗阳县| 固始县| 剑川县| 墨竹工卡县| 永吉县| 河津市| 玉田县| 辽阳县| 宜兰县| 丰原市|