前言
提示:这里可以添加本文要记录的大概内容:
接着上一篇的mvc(上),下面继续接着写,上篇回顾,讲到了
a. @RequestMapping: 路由映射
b. @RequestParam: 后端参数重命名
c. @RequestBody: 接收JSON类型的参数
这三个类注解,接下来开启新篇
提示:以下是本篇文章正文内容,下面案例可供参考
一、@RequestBody补充
public class UserInfo { private Integer id; private String username; private Integer age; @Override public String toString() { return "UserInfo{" + "id=" + id + ", username='" + username + '\'' + ", age=" + age + '}'; } public Integer getId() { return id; } public String getUsername() { return username; } public Integer getAge() { return age; } public void setId(Integer id) { this.id = id; } public void setUsername(String username) { this.username = username; } public void setAge(Integer age) { this.age = age; } }
@RequestMapping("/r6") public String r6(@RequestBody UserInfo userInfo){ return userInfo.toString(); }
这里就是再补充一下中Java对象转json的写法
public class JSONUtils { public static void main(String[] args) throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); UserInfo userInfo = new UserInfo(); userInfo.setUsername("zhangsan"); userInfo.setAge(18); userInfo.setId(10); //对象转json String s = objectMapper.writeValueAsString(userInfo); System.out.println(s); UserInfo userInfo1 = objectMapper.readValue(s,UserInfo.class); System.out.println(userInfo1); } }
第一行就是转成的json格式
然后把这个复制到postman中
{"id":10,"username":"zhangsan","age":18}
requestbody是body并且是json格式
然后就可以了
二、@PathVariable
这个就是修改url的路径
我演示一下
@RequestMapping("/r7/{name}/{age}") public String r7(@PathVariable String name,@PathVariable Integer age){ return "name:"+name+"age:"+age; }
三.@RequestPart:
@RequestMapping("/r9") public String r9(@RequestPart MultipartFile file) throws IOException { String filename = file.getOriginalFilename(); file.transferTo(new File("D:/images/"+filename)); return filename; }
这个这样子写别忘了
四.@ResponseBody
这个二记住一下@RestController = @Controller + @ResponseBody
五.@CookieValue,@SessionAttribute,@RequestHeader
@CookieValue: 从Cookie中获取值
@SessionAttribute: 从Session中获取值
@RequestHeader: 从Header中获取值
public class RequestController { @RequestMapping("/getCookie") public String getCookie(HttpServletRequest request){ Cookie[] cookies = request.getCookies(); // Arrays.stream(cookies).forEach(x -> System.out.println(x.getName()+":"+x.getValue())); if (cookies!=null){ for (Cookie c:cookies) { System.out.println(c.getName()+":"+c.getValue()); } return "获取cookie成功"; } return "获取失败"; } @RequestMapping("/getCookie2") public String getCookie2(@CookieValue("bite")String bite){ return "bite"+bite; } @RequestMapping("/setSession") public String setSession(HttpServletRequest request){ HttpSession session = request.getSession(); session.setAttribute("userName","wangwu"); return "设置session成功"; } @RequestMapping("/getSession") public String getSession(HttpServletRequest request){ HttpSession session = request.getSession(); String username = (String) session.getAttribute("username"); return "登录用户"+username; } @RequestMapping("/getSession2") public String getSession(HttpSession session){ String username = (String) session.getAttribute("userName"); return "登录用户:"+username; } @RequestMapping("/getSession3") public String getSession(@SessionAttribute("userName")String username){ return "登录用户:"+username; } @RequestMapping("/getHeader") public String getHeader(HttpServletRequest request){ String userAgent = request.getHeader("User-Agent"); return "userAgent:"+userAgent; } }
个人感觉还是HttpServletRequest 更加通用,当然了setsession还是得session.setAttribute