一步步學(xué)習(xí)java后臺(三)(接口返回數(shù)據(jù)處理)

鏈接

一步步學(xué)習(xí)java后臺(一)
一步步學(xué)習(xí)java后臺(二)

本期目標(biāo)

1.添加Spring注解支持, 通過注解使得接口可以成功返回一個字符串

  1. 添加AccountVo,并將AccountVo轉(zhuǎn)換為JSON數(shù)據(jù)返回
Spring注解

沒有注解的Spring框架是沒有靈魂的!

上一章中,傳統(tǒng)的SpringMVC的Controller只能完成通過實(shí)現(xiàn)函數(shù) ModelAndView handleRequest()實(shí)現(xiàn)一種方法,此外,在spring-servlet.xml中,我們需要對每一個controller注冊一個path。一個成熟的后臺出現(xiàn)的路徑可能以千記,難以想象通過這種手工方式如何實(shí)現(xiàn)。
注解就是為了解決這些問題而實(shí)現(xiàn)的。

@Controller

@Controller注解用于定義Controller
一個使用@Controller的java類如下:

HelloJSON

@Controller注解需要通過scan而被Spring框架發(fā)現(xiàn),我們在spring-context.xml中添加如下配置:

    <context:component-scan base-package="com.zhoushijie.mock">
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>
@RequestMapping

@Controller + 掃描機(jī)制等同于聲明的 class 屬性,下面我們要配置后半部分的name,也就是 path屬性。

image.png

@RequestMapping 就是用來做這種映射的,它可以將請求映射到類上,也可以映射到方法上。

@Controller
public class HelloWorldJSONController {
    @RequestMapping(value = "/hellonihao")
    public String helloNiHao() {
        return "helloHao";
    }
}

這時候運(yùn)行下,讓我們來訪問下接口:

http://localhost:8080/tutorial_war_exploded/hellonihao

我們會發(fā)現(xiàn),這個接口會嘗試訪問 helloHao.jsp,但是我們庫里沒有這個jsp文件,因此會爆404

image.png

這時候就需要第三個注解登場了:

@RequestBody

注解的作用是controller的方法返回的對象通過適當(dāng)?shù)霓D(zhuǎn)換器轉(zhuǎn)換為指定的格式之后,寫入到response對象的body區(qū),通常用來返回JSON數(shù)據(jù)或者是XML數(shù)據(jù)。
使用此注解之后不會再走視圖處理器,直接通過response對象輸出指定格式的數(shù)據(jù)。

@Controller
public class HelloWorldJSONController {
    @RequestMapping(value = "/hellonihao")
    public
    @ResponseBody
    String helloNiHao() {
        return "helloNiHao";
    }
}

重新運(yùn)行并訪問,我們就可以看到運(yùn)行結(jié)果:

image.png

現(xiàn)在已經(jīng)成功返回字符串?dāng)?shù)據(jù)。

現(xiàn)在,我們已經(jīng)成功完成了第一步返回字符串的目標(biāo)。

JSON化

對于后臺而言,其最主要的職責(zé)是處理邏輯,根據(jù)面向?qū)ο蟮脑瓌t,邏輯在代碼中的實(shí)現(xiàn)是一個個Java Bean。當(dāng)然,在實(shí)際項目里對應(yīng)不同的目的被稱為VO, PO, DTO..... 前端向后臺發(fā)起請求,一般是希望獲取到這些Bean (或者叫 VO view object)。而最通用的方法,就是講Bean轉(zhuǎn)化為JSON字符串進(jìn)行下發(fā)。

當(dāng)然,我們可以對每一個接口函數(shù)添加一次JSON解析,但是這樣做就浪費(fèi)了Spring框架強(qiáng)大的AOP能力。通過配置,我們完全可以直接使Bean自動JSON化。

對于一個商業(yè)后臺系統(tǒng)來說,用戶信息Account是肯定需要的。因此我們就通過Account例子來進(jìn)行展示:

新建Bean


public class UserAccountVo {
    private int userId;

    private String sessionKey;

    private String headImgUrl;

    private String userName;
}
單擊command + n,生成getter and sender

新建Controller

@Controller
@RequestMapping("/account/V1")
public class AccountController {
    @RequestMapping(value = "/getUserInfo", method = RequestMethod.GET )
    public
    @ResponseBody
    UserAccountVo getUserInfo() {
        UserAccountVo account = new UserAccountVo();
        account.setUserId(1);
        account.setUserName("userName");
        return new UserAccountVo();
    }
}

現(xiàn)在我們可以先運(yùn)行一下,看看

git地址:

https://github.com/milawoai/fed-teacher

tag:1.0.3

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容