溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

springmvc如何響應(yīng)ajax數(shù)據(jù)請求返回json數(shù)據(jù)

發(fā)布時間:2021-07-09 17:36:46 來源:億速云 閱讀:251 作者:chen 欄目:大數(shù)據(jù)

這篇文章主要講解了“springmvc如何響應(yīng)ajax數(shù)據(jù)請求返回json數(shù)據(jù)”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“springmvc如何響應(yīng)ajax數(shù)據(jù)請求返回json數(shù)據(jù)”吧!

一、采用fastjson結(jié)合springmvc的方式

1、引入依賴

<!--鎖定所有spring的版本-->
<properties>
    <spring.version>5.0.2.RELEASE</spring.version>
    <!--編譯版本修改-->
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>jsp-api</artifactId>
        <version>2.0</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.9.0</version>
    </dependency>
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.2.47</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>2.9.0</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
        <version>2.9.0</version>
    </dependency>

    <!--多視圖解析器-->
    <dependency>
        <groupId>com.fasterxml.jackson.dataformat</groupId>
        <artifactId>jackson-dataformat-xml</artifactId>
        <version>2.9.8</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.10</version>
    </dependency>
</dependencies>

2、編寫實(shí)體類

private String name;
private int age;
private String password;
@JSONField(format = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date date;

3、編寫controller控制代碼

/**
 * 返回java對象
 * @param student
 * @return
 */
@RequestMapping("/testAjax")
@ResponseBody
public Student  testAjax( Student student) {
    System.out.println("testAjax is working");
    student.setName("tom");
    student.setAge(23);
    student.setPassword("123456");
    student.setDate(new Date());
    System.out.println(student);
    return student;
}

4、在springmvc中編寫配置json解析代碼

<!--配置spring開啟注解mvc的支持
     *配置json格式轉(zhuǎn)化器
    -->
    <mvc:annotation-driven>
        <mvc:message-converters>
            <bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
                <property name="supportedMediaTypes">
                    <list>
                        <value>application/json;charset=UTF-8</value>
                    </list>
                </property>
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>
    <!--annotation-driven:左右如下
     1、會自動注冊RequestMappingHandlerMapping、RequestMappingHandlerAdapter、ExceptionHandlerExceptionResolver三個bean支持使用了像@RquestMapping、ExceptionHandler等等的注解的controller 方法去處理請求。
     2、支持使用了ConversionService的實(shí)例對表單參數(shù)進(jìn)行類型轉(zhuǎn)換。
     3、支持使用@NumberFormat、@NumberFormat等注解對數(shù)據(jù)類型進(jìn)行格式化。
     4、支持使用@Valid對javaBean進(jìn)行JSR-303驗(yàn)證。
     5、支持使用@RequestBody、@ResponseBody。
-->

5、在response.jsp中發(fā)送ajax請求數(shù)據(jù)

$.getJSON("/user/testAjax",function (data) {
    console.log(data);
})

測試代碼:

springmvc如何響應(yīng)ajax數(shù)據(jù)請求返回json數(shù)據(jù)

二、采用jackjson的方式

1、導(dǎo)入依賴如上相同

2、創(chuàng)建實(shí)體類

也就是在之前springmvc中表單提交的時候封裝對象的問題,遇見日期類型解決404的問題解決方案一

@DateTimeFormat(pattern = "yyyy-MM-dd")
  private Date brithday;

private String name;
private int age;
private String password;
@JSONField(format = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date date;

3、編寫測試代碼

@Test
public void test1() throws Exception{
    Man man = new Man();
    man.setName("陳多多");
    man.setAddress("重慶合川");
    man.setBrithday(new Date());

    Man man1 = new Man();
    man.setName("陳多多");
    man.setAddress("重慶合川");
    man.setBrithday(new Date());

    Man man2 = new Man();
    man.setName("陳多多");
    man.setAddress("重慶合川");
    man.setBrithday(new Date());

    //創(chuàng)建list集合轉(zhuǎn)為json

    List<Man> ps = new ArrayList<Man>();
    ps.add(man);
    ps.add(man1);

    ObjectMapper objectMapper = new ObjectMapper();
    String value = objectMapper.writeValueAsString(ps);
    System.out.println(value);
}

@Test
public void test3() throws Exception{
    Map<String, Object> map = new HashMap<String, Object>();
    map.put("name","陳多多");
    map.put("age",23);
    map.put("address","重慶合川");
    ObjectMapper objectMapper = new ObjectMapper();
    String value = objectMapper.writeValueAsString(map);
    System.out.println(value);
}

}

測試結(jié)果如下:

list集合轉(zhuǎn)化出來是一個數(shù)組對象,map結(jié)合轉(zhuǎn)化出來和java對象一致

感謝各位的閱讀,以上就是“springmvc如何響應(yīng)ajax數(shù)據(jù)請求返回json數(shù)據(jù)”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對springmvc如何響應(yīng)ajax數(shù)據(jù)請求返回json數(shù)據(jù)這一問題有了更深刻的體會,具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI