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

使用SpringMVC返回json字符串的實(shí)例講解

 更新時(shí)間:2018年03月27日 09:58:18   作者:過自己想過的生活  
下面小編就為大家分享一篇使用SpringMVC返回json字符串的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

最近開始接觸SpringMVC這個(gè)框架,這個(gè)框架使用起來很方便,框架搭起來之后,寫起代碼幾乎都是一個(gè)模式。當(dāng)然要走到這一步必須保證你的SpringMVC的相關(guān)配置都已經(jīng)完成,并且配置正確!

作為我的關(guān)于S平ringMVC的首篇博客,本篇博客主要說名如何配置SpringMVC,并且可以使之正常的返回Bean實(shí)體,這里的bean實(shí)體一般返回到前端都是以Json字符串的形式返回的。

使用的開發(fā)工具為eclipse,這個(gè)也是比較大眾化的開發(fā)工具了,算的上是人人都會(huì)使用的了,只是熟練程度不一樣!

具體的配置如下:

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:context="http://www.springframework.org/schema/context"
  xmlns:mvc="http://www.springframework.org/schema/mvc"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd
  http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
  http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"
  id="WebApp_ID" version="3.1">
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
  </context-param>
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <display-name>ReturnJsonDemo</display-name>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:dispatcher-servlet.xml</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>

dispatcher-servlet.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns="http://www.springframework.org/schema/beans"
  xmlns:context="http://www.springframework.org/schema/context"
  xmlns:mvc="http://www.springframework.org/schema/mvc"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd
  http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
  http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
  http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
  <mvc:default-servlet-handler />
  <context:component-scan base-package="com.zyq.springmvc.controller">
    <context:exclude-filter type="annotation"
      expression="org.springframework.stereotype.Service" />
  </context:component-scan>
  <context:annotation-config />
  <mvc:annotation-driven>
    <mvc:message-converters>
      <bean class="org.springframework.http.converter.StringHttpMessageConverter">
        <property name="supportedMediaTypes">
          <list>
            <value>text/plain;charset=UTF-8</value>
            <value>text/html;charset=UTF-8</value>
          </list>
        </property>
      </bean>
      <bean
        class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
        <property name="supportedMediaTypes">
          <list>
            <value>application/json; charset=UTF-8</value>
            <value>application/x-www-form-urlencoded; charset=UTF-8</value>
          </list>
        </property>
      </bean>
    </mvc:message-converters>
  </mvc:annotation-driven>
</beans>

還有一個(gè)applicationContext.xml,不過我的里面什么都沒有寫,我就不給出了!

新建一個(gè)index.jsp,這個(gè)作為主界面用來測(cè)試各個(gè)接口的返回值是否正常!這里也給出代碼:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
  pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Main Page</title>
</head>
<body>
  <h1>Welcome Main Page!!!</h1>
  <form action="/ReturnJsonDemo/first">
    <input type="submit" value="first" />
  </form>
  <form action="/ReturnJsonDemo/second">
    <input type="submit" value="second" />
  </form>
  <form action="/ReturnJsonDemo/third">
    <input type="submit" value="third" />
  </form>
  <form action="/ReturnJsonDemo/fourth">
    <input type="submit" value="fourth" />
  </form>
</body>
</html>

到這里基本上配置方面的都完成了,然后是申明一個(gè)Controller,具體的代碼也比較簡(jiǎn)單,基本上都是固定的格式!

MainController.java

package com.zyq.springmvc.controller;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.zyq.springmvc.bean.CommonBean;
import com.zyq.springmvc.bean.SonBean;
@Controller
public class MainController {
  @RequestMapping("/first")
  @ResponseBody
  public CommonBean getFirst(){
    CommonBean bean = new CommonBean();
    bean.setResultCode("success");
    bean.setTimeStamp(new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(System.currentTimeMillis()));
    bean.setData("this is first message");
    return bean;
  }
  @RequestMapping("/second")
  @ResponseBody
  public CommonBean getSecond(){
    CommonBean bean = new CommonBean();
    bean.setResultCode("success");
    bean.setTimeStamp(new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(System.currentTimeMillis()));
    List<String> data = new ArrayList<>();
    data.add("JAVA");
    data.add("C");
    data.add("PYTHON");
    data.add("C++");
    bean.setData(data);
    return bean;
  }
  @RequestMapping("/third")
  @ResponseBody
  public CommonBean getThird(){
    CommonBean bean = new CommonBean();
    bean.setResultCode("success");
    bean.setTimeStamp(new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(System.currentTimeMillis()));
    Map<String, String> data = new HashMap<>();
    data.put("first", "JAVA");
    data.put("second","PYTHON");
    data.put("third", "C++");
    data.put("fourth", "C");
    bean.setData(data);
    return bean;
  }
  @RequestMapping("/fourth")
  @ResponseBody
  public CommonBean getFourth(){
    CommonBean bean = new CommonBean();
    bean.setResultCode("success");
    bean.setTimeStamp(new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(System.currentTimeMillis()));
    SonBean sonBean = new SonBean();
    sonBean.setAge(25);
    sonBean.setName("Hacker's Delight");
    sonBean.setGender("male");
    bean.setData(sonBean);
    return bean;
  }
}

代碼的運(yùn)行效果如下:

好像不同瀏覽器對(duì)于接口的請(qǐng)求操作不一樣,在使用eclipse請(qǐng)求接口,會(huì)讓下載一個(gè)json文件,文件的內(nèi)容就是一個(gè)json字符串。

在配置完整的工程需要用到springframework的jar包,jackson的相關(guān)jar包,我使用的tomcat8.5在運(yùn)行的時(shí)候提示報(bào)錯(cuò),需要引入common-log的jar包。

在聲明一個(gè)返回json字符串的接口時(shí),一定要使用@ResponseBody注解,這個(gè)注解會(huì)將接口的返回?cái)?shù)據(jù)寫入response中的body區(qū)域,也就是重新傳回前端。

在我測(cè)試的時(shí)候遇到一個(gè)問題,在返回bean的時(shí)候,只能返回類包裹,不能返回類繼承或者接口繼承,舉個(gè)例子:

如果你返回一個(gè)ParentBean,其內(nèi)部包含一個(gè)ChildBean,這樣是ok!

如果在接口定義時(shí),返回的是一個(gè)父類,而實(shí)際返回的是它的子類,這時(shí)候匯報(bào)錯(cuò)誤,提示無法將子類轉(zhuǎn)換成父類,就相當(dāng)于你不能將String對(duì)象轉(zhuǎn)換成object對(duì)象,關(guān)于這方面應(yīng)該是根據(jù)父類無法查找子類的屬性,導(dǎo)致無法正常將bean對(duì)象轉(zhuǎn)換成json字符串,所以在框架中不允許在接口中聲明bean而返回的是bean的子類(這些原因都只是個(gè)人猜測(cè),具體的原因還需要分析框架中的代碼)!

好了,關(guān)于返回json字符串就說到這里了!附上demo的源碼,需要的jar包也在里面,需要的可以自己去下載!

源碼下載

以上這篇使用SpringMVC返回json字符串的實(shí)例講解就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot如何使用mail實(shí)現(xiàn)登錄郵箱驗(yàn)證

    SpringBoot如何使用mail實(shí)現(xiàn)登錄郵箱驗(yàn)證

    在實(shí)際的開發(fā)當(dāng)中,不少的場(chǎng)景中需要我們使用更加安全的認(rèn)證方式,同時(shí)也為了防止一些用戶惡意注冊(cè),我們可能會(huì)需要用戶使用一些可以證明個(gè)人身份的注冊(cè)方式,如短信驗(yàn)證、郵箱驗(yàn)證等,這篇文章主要介紹了SpringBoot如何使用mail實(shí)現(xiàn)登錄郵箱驗(yàn)證,需要的朋友可以參考下
    2024-06-06
  • Java源碼跟蹤閱讀技巧【值得收藏】

    Java源碼跟蹤閱讀技巧【值得收藏】

    今天跟大家分享一下我平時(shí)閱讀源碼的幾個(gè)小技巧,對(duì)于閱讀Java中間件如Spring、Dubbo等框架源碼的同學(xué)有一定幫助。本文基于Eclipse IDE,感興趣的朋友跟隨小編一起看看吧
    2018-11-11
  • JAVA Integer類型自加實(shí)例詳解

    JAVA Integer類型自加實(shí)例詳解

    這篇文章主要介紹了JAVA Integer類型自加實(shí)例詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • 關(guān)于文件合并與修改md5值的問題

    關(guān)于文件合并與修改md5值的問題

    這篇文章主要介紹了關(guān)于文件合并與修改md5值的問題,使用本博客的方法,不僅僅可以修改md5值,還可以達(dá)到隱藏文件的目的,需要的朋友可以參考下
    2023-04-04
  • Java文件批量重命名批量提取特定類型文件

    Java文件批量重命名批量提取特定類型文件

    這篇文章主要介紹了Java文件批量重命名批量提取特定類型文件的相關(guān)資料
    2016-08-08
  • Java畫筆的簡(jiǎn)單實(shí)用方法

    Java畫筆的簡(jiǎn)單實(shí)用方法

    這篇文章主要介紹了Java畫筆的簡(jiǎn)單實(shí)用方法,需要的朋友可以參考下
    2017-09-09
  • JDK8并行流及串行流區(qū)別原理詳解

    JDK8并行流及串行流區(qū)別原理詳解

    這篇文章主要介紹了JDK8并行流及串行流區(qū)別原理詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • IDEA檢查項(xiàng)目的jdk版本需要看的地方

    IDEA檢查項(xiàng)目的jdk版本需要看的地方

    這篇文章主要介紹了IDEA檢查項(xiàng)目的jdk版本需要看的地方,文中通過圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-06-06
  • Java中的定時(shí)器Timer詳解

    Java中的定時(shí)器Timer詳解

    這篇文章主要為大家詳細(xì)介紹了Java定時(shí)器Timer的使用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • 完美解決Logback configuration error detected的問題

    完美解決Logback configuration error detected的問題

    這篇文章主要介紹了完美解決Logback configuration error detected的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08

最新評(píng)論

娱乐| 余江县| 新野县| 武定县| 徐州市| 定日县| 拜城县| 竹溪县| 资溪县| 十堰市| 马鞍山市| 中方县| 宿州市| 长治县| 偏关县| 密山市| 嘉禾县| 江源县| 石泉县| 津市市| 洮南市| 阜平县| 北安市| 乌兰县| 平果县| 保德县| 项城市| 泽库县| 高淳县| 沾益县| 赤壁市| 宁强县| 建阳市| 千阳县| 周口市| 武功县| 镶黄旗| 新干县| 巴林右旗| 永登县| 长宁区|