spring mvc 输入输出示例

本文是对《Spring MVC 输入输出的一些细节》的重新整理,通过表格形式清晰展示Spring MVC处理输入和输出的关键信息。

之前写了一篇《spring mvc 输入输出的一些细节》 https://blog.csdn.net/wuzhong8809/article/details/88327369,内容比较冗余。

重新整理成表格,记录如下:

输入

 

注解

@RequestParam + @PostMapping

说明

获取POST请求中的HTTP头部中的参数

使用示例

@RestController

public class RoleController {

@PostMapping("/test")

public Object test(@RequestParam(value = "keyWord", required = false) String keyWord) {

System.out.println("keyWord:" + keyWord);

return "";

}

}

junit 测试示例

@RunWith(SpringRunner.class)

@SpringBootTest

public class DemoApplicationTests {

 

@Autowired

private WebApplicationContext context;

 

private MockMvc mockMvc;

 

@Before

public void setUp() throws Exception {

mockMvc = MockMvcBuilders.webAppContextSetup(context).build();

}

 

@Test

public void testSetUserRoleAndPermissions() throws Exception {

 

mockMvc.perform(

MockMvcRequestBuilders.post("/test").param("keyWord", "test"))

.andExpect(MockMvcResultMatchers.status().isOk())

.andDo(MockMvcResultHandlers.print()).andReturn();

}

}

 

 

注解

@RequestParam + @GetMapping

说明

获取GET请求中的URL中的参数

使用示例

@GetMapping("/test")

public Object test(@RequestParam(value = "keyWord", required = false) String keyWord) {

System.out.println("keyWord:" + keyWord);

return "";

}

junit 测试示例

mockMvc.perform(

MockMvcRequestBuilders.get("/test?keyWord=test"))

.andExpect(MockMvcResultMatchers.status().isOk())

.andDo(MockMvcResultHandlers.print()).andReturn();

 

 

mockMvc.perform(

MockMvcRequestBuilders.get("/test").param("keyWord", "test"))

.andExpect(MockMvcResultMatchers.status().isOk())

.andDo(MockMvcResultHandlers.print()).andReturn();

 

 

注解

@PathVariable ( GET / POST / DELETE 等通用)

说明

获取URL中的特定部分

使用示例

@GetMapping("/test/id/{id}")

public Object getDetail(@PathVariable(value = "id") int id) {

System.out.println("id:" + id);

return "";

}

junit 测试示例

mockMvc.perform(

MockMvcRequestBuilders.get("/test/id/100"))

.andExpect(MockMvcResultMatchers.status().isOk())

.andDo(MockMvcResultHandlers.print()).andReturn();

 

 

 

注解

@RequestBody

说明

获取HTTP正文中的参数

使用示例

static class Book {

String name;

String price;

 

public Book(String name, String price) {

this.name = name;

this.price = price;

}

 

public String getName() {

return name;

}

 

public void setName(String name) {

this.name = name;

}

 

public String getPrice() {

return price;

}

 

public void setPrice(String price) {

this.price = price;

}

}

 

@PostMapping("/test")

public Object create(@RequestBody Book book) {

System.out.println("book:" + book.name + " price:" + book.price);

return "";

}

junit 测试示例

ObjectMapper om = new ObjectMapper();

String content = om.writeValueAsString(new Book("Oh java", "100"));

mockMvc.perform(

MockMvcRequestBuilders.post("/test").content(content)

.contentType(MediaType.APPLICATION_JSON))

.andExpect(MockMvcResultMatchers.status().isOk())

.andDo(MockMvcResultHandlers.print()).andReturn();

 

注解

@GetMapping or @PostMapping

说明

URL中 key=value 这样的参数自动转换成类对象

使用示例

    @PostMapping("/tata")
    public Object setBook(Book book) {
        System.out.println("book:" + book.name);
        return "fff";
    }


    @GetMapping("/tata")
    public Object getBook(Book book) {
        System.out.println("getBook book name :" + book.name);
        System.out.println("getBook book price:" + book.price);
        return "fff";
    }
 

class Book {

  String name;

  String price

}

junit 测试示例


        // url 参数 + post
        String ret = mockMvc
                .perform(MockMvcRequestBuilders.post("/tata?name=bookname&price=100"))
                .andExpect(MockMvcResultMatchers.status().isOk())
                .andDo(MockMvcResultHandlers.print()).andReturn().getResponse()
                .getContentAsString();

        // url 参数 + get
        ret = mockMvc.perform(MockMvcRequestBuilders.get("/tata?name=bookname&price=100"))
                .andExpect(MockMvcResultMatchers.status().isOk())
                .andDo(MockMvcResultHandlers.print()).andReturn().getResponse()
                .getContentAsString();
 

 

输出

注解

@ResponseBody + @Controller / @RestController

说明

被修饰的接口函数的的返回值作用HTTP响应的正文返回给请求端。如果返回的是一个对象,将会使用jackson工具自动转换为String。

使用示例

@ResponseBody

@GetMapping("/test/randomBook")

public Object randomBook() {

return new Book("" + System.currentTimeMillis(), "100");

}

junit 测试示例

mockMvc.perform(

MockMvcRequestBuilders.get("/test/randomBook"))

.andExpect(MockMvcResultMatchers.status().isOk())

.andDo(MockMvcResultHandlers.print()).andReturn();

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zonson9999

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值