之前写了一篇《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")
class Book { String name; String price } |
| junit 测试示例 |
// url 参数 + get |
输出
| 注解 | @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(); |
本文是对《Spring MVC 输入输出的一些细节》的重新整理,通过表格形式清晰展示Spring MVC处理输入和输出的关键信息。

298

被折叠的 条评论
为什么被折叠?



