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)行測試

Spring MVC 使用xml傳參問題就解決了。
能力一般,水平有限,如有錯誤,請多指出。
如果對你有用點個關(guān)注給個贊唄
更多文章可以關(guān)注一下我的微信公眾號suncodernote