面試題回顧:Spring MVC 怎么使用xml傳參?

Spring MVC 怎么使用xml傳參?這是我之前面試遇到的一個問題,由于一直都是使用JSON傳參沒用過xml傳參,這個問題還真不知道。。。
所以今天學(xué)習(xí)記錄一下。
xml傳參主要有兩個步驟:
1、在controller方法的RequestMapping注解中限制接收類型為application/xml
2、在controller方法的接收類上加XmlRootElement或者JacksonXmlRootElement注解

如果使用JacksonXmlRootElement注解要引入JacksonXmlRootElement相關(guān)依賴

<dependency>
    <groupId>com.fasterxml.jackson.dataformat</groupId>
    <artifactId>jackson-dataformat-xml</artifactId>
    <version>2.13.1</version>
</dependency>

這里只使用XmlRootElement注解測試,感興趣的可以試試JacksonXmlRootElement注解測試。

示例:

1、新建一個pojo對象用于接收參數(shù)
@XmlRootElement注解的name對應(yīng)著xml中根節(jié)點的名字, javax.xml.bind.annotation包下有很多注解,如果遇到問題可以去看看源碼,說不定哪個注解就能解決你的問題了呢。
如果使用jackson-dataformat-xml的話XmlRootElement注解就要換成JacksonXmlRootElement注解,

@Data
@XmlRootElement(name = "userList")
public class UserXmlDTO {
    private Long userId;

    private String userName;
}

2、新建xml以便CV使用

<?xml version="1.0" encoding="UTF-8"?>
<userList>
    <userId>1</userId>
    <userName>name</userName>
</userList>

3、新建controller進(jìn)行測試
要把接收參數(shù)類型設(shè)置為MediaType.APPLICATION_XML_VALUE,使用@ResponseBody將返回值以xml的形式返回。

@Controller
@RequestMapping("/test")
public class TestController {

    @PostMapping(value= "testXmlParam" , consumes = MediaType.APPLICATION_XML_VALUE , produces = MediaType.APPLICATION_XML_VALUE)
    @ResponseBody
    public UserXmlDTO testXmlParam(@RequestBody UserXmlDTO userXmlDTO){
        System.out.println(userXmlDTO);
        return userXmlDTO;
    }

}

4、通過postman進(jìn)行測試


image.png

Spring MVC 使用xml傳參問題就解決了。

能力一般,水平有限,如有錯誤,請多指出。
如果對你有用點個關(guān)注給個贊唄

更多文章可以關(guān)注一下我的微信公眾號suncodernote

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

相關(guān)閱讀更多精彩內(nèi)容

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