# springmvc **Repository Path**: Clara77/springmvc ## Basic Information - **Project Name**: springmvc - **Description**: 补充知识 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-11-29 - **Last Updated**: 2021-11-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Mvc 补充知识 ## @RequestParam > 为方法参数添加一个 @RequestParam 注解,指定其 value 属性值为请求参数名 ## @RequestHeader > ```java > @RequestMapping("/requestHeader") > public String requestHeader(@RequestHeader(value = "HAHAHA",required = false) String userAgent){ > System.out.println("User-Agent = " + userAgent); > return "success"; > } > ``` ## @CookieValue ![image-20210818165305439](assets/image-20210818165305439.png) ## 数据传输 ![image-20210818170126463](assets/image-20210818170126463.png) ## @SessionAttributes ![image-20210818170338774](assets/image-20210818170338774.png) ## @ModelAttribute ​ 作用在方法上 - 该方法会比 @RequestMapping 注解的目标方法先进行 - 在该方法中,使用 Map/Model/ModelMap 作为方法参数 - 将查询到的 数据库数据封装为 POJO 类对象后,保存在对应的 Map/Model/ModelMap 中 #### 作用在参数上 - 作用在对应的 POJO类对象 的方法参数上 - 通过指定其注解属性值 value ,获取刚刚在于先前方法中保存在 Map/Model/ModelMap 的数据 - 而 value 的属性值就是刚刚保存数据时使用的 key 值 - SpringMVC 仍会自动将带有请求参数值注入到对应属性 ## 请求转发和重定向 ![image-20210818171517505](assets/image-20210818171517505.png) # 前后端交互 ## **@ResponseBody** > @ResponseBody 将返回值的内容作为响应体 > > 如果返回值是一个对象 jackson 会帮我们解析成 json 格式的 ![image-20210818172620745](assets/image-20210818172620745.png) ## 获取 JSON 数据 > ​ 使用 @RequestBody 获取请求体数据 ## 后端 ```java /** * @RequestBody 使用 2 - 获取JSON数据后封装为实体类 * @param body * @return */ @RequestMapping("/addEmpBean") public String addEmp(@RequestBody Employee body){ System.out.println(body); return "success"; } ``` ## 前端 ```js //定义一个 JS 对象 var emp = { lastName:"EMT!", email:"123@123.com", gender:0 } $("a:first").click(function (){ //发送 Ajax 请求 $.ajax({ url:"ajax/addEmpBean", type:"POST", contentType:"application/json", //指定发送数据类型为 JSON data:JSON.stringify(emp),//将 JS 对象转换为 JSON 字符串后作为数据发送 success:function (data){ alert(data); } }) return false; }); ``` ## HttpEnity > ​ 作用:如果在目标方法使用 HttpEnity 类型的参数,在对应的请求发送过来之后,该参数会获取这次请求中的所有请求体和请求头 ## ResponseEnity > 可以代替 @ResponseBody 注解,返回自定义的响应体 + 响应头 > > 设计目标方法,返回值类型为 ResponseEntity ```java /** * 通过返回 ResponseEntity 返回指定的响应体和响应头 * - 泛型 T 为响应体的数据类型 * @return */ @RequestMapping("/responseEnity") public ResponseEntity testResponseEntity(){ //响应体数据 String body = "success"; //自定义响应头 MultiValueMap headers = new HttpHeaders(); //自定义响应头数据 headers.set("Set-Cookie","EMT!!=OK"); //响应状态 HttpStatus status = HttpStatus.OK; return new ResponseEntity(body,headers,status); } ```