“ SpringBoot(接受参数相关注解) ”
文章目录
- 1.基本介绍2.@PathVariable 路径参数获取信息1.代码实例1.index.html2.ParameterController.java3.测试 2.细节说明 3.@RequestHeader 请求头获取信息1.代码实例1.index.html2.ParameterController.java3.测试 2.细节说明 4.@RequestParameter 请求获取参数信息1.代码实例1.index.html2.ParameterController.java3.测试 2.细节说明 5.@CookieValue cookie获取值1.代码实例1.index.html2.ParameterController.java3.测试 2.细节说明 6.@RequestBody 处理json请求,post请求体获取信息1.代码实例1.index.html2.ParameterController.java3.测试 7.@RequestAttribute 请求域获取信息1.代码实例1.RequestController.java2.配置视图解析器 application.yml3.测试 8.@SessionAttribute session域获取信息1.代码实例1.SessionController.java2.配置视图解析器同上3.测试 9.复杂参数1.代码实例1.RequestController.java2.测试 2.HttpServletResponse给浏览器设置cookie1.代码实例2.测试
- 1.基本介绍
- 2.@PathVariable 路径参数获取信息
- 1.代码实例1.index.html2.ParameterController.java3.测试 2.细节说明
- 1.代码实例1.index.html2.ParameterController.java3.测试 2.细节说明
- 1.代码实例
- 1.index.html2.ParameterController.java3.测试
- 1.index.html
- 2.ParameterController.java
- 3.测试
- 2.细节说明
- 3.@RequestHeader 请求头获取信息
- 1.代码实例1.index.html2.ParameterController.java3.测试 2.细节说明
- 1.代码实例1.index.html2.ParameterController.java3.测试 2.细节说明
- 1.代码实例
- 1.index.html2.ParameterController.java3.测试
- 1.index.html
- 2.ParameterController.java
- 3.测试
- 2.细节说明
- 4.@RequestParameter 请求获取参数信息
- 1.代码实例1.index.html2.ParameterController.java3.测试 2.细节说明
- 1.代码实例1.index.html2.ParameterController.java3.测试 2.细节说明
- 1.代码实例
- 1.index.html2.ParameterController.java3.测试
- 1.index.html
- 2.ParameterController.java
- 3.测试
- 2.细节说明
- 5.@CookieValue cookie获取值
- 1.代码实例1.index.html2.ParameterController.java3.测试 2.细节说明
- 1.代码实例1.index.html2.ParameterController.java3.测试 2.细节说明
- 1.代码实例
- 1.index.html2.ParameterController.java3.测试
- 1.index.html
- 2.ParameterController.java
- 3.测试
- 2.细节说明
- 6.@RequestBody 处理json请求,post请求体获取信息
- 1.代码实例1.index.html2.ParameterController.java3.测试
- 1.代码实例1.index.html2.ParameterController.java3.测试
- 1.代码实例
- 1.index.html2.ParameterController.java3.测试
- 1.index.html
- 2.ParameterController.java
- 3.测试
- 7.@RequestAttribute 请求域获取信息
- 1.代码实例1.RequestController.java2.配置视图解析器 application.yml3.测试
- 1.代码实例1.RequestController.java2.配置视图解析器 application.yml3.测试
- 1.代码实例
- 1.RequestController.java2.配置视图解析器 application.yml3.测试
- 1.RequestController.java
- 2.配置视图解析器 application.yml
- 3.测试
- 8.@SessionAttribute session域获取信息
- 1.代码实例1.SessionController.java2.配置视图解析器同上3.测试
- 1.代码实例1.SessionController.java2.配置视图解析器同上3.测试
- 1.代码实例
- 1.SessionController.java2.配置视图解析器同上3.测试
- 1.SessionController.java
- 2.配置视图解析器同上
- 3.测试
- 9.复杂参数
- 1.代码实例1.RequestController.java2.测试 2.HttpServletResponse给浏览器设置cookie1.代码实例2.测试
- 1.代码实例1.RequestController.java2.测试 2.HttpServletResponse给浏览器设置cookie1.代码实例2.测试
- 1.代码实例
- 1.RequestController.java2.测试
- 1.RequestController.java
- 2.测试
- 2.HttpServletResponse给浏览器设置cookie
- 1.代码实例2.测试
- 1.代码实例
2.测试
1.基本介绍
2.@PathVariable 路径参数获取信息
1.代码实例
1.index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>基本注解</h1> <hr/> <a href="/monster/100/king">@PathVariable-路径变量/monster/100/king</a> </body> </html>
2.ParameterController.java
package com.sun.springboot.controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController; import java.util.Map; /** * @author 孙显圣 * @version 1.0 */ @RestController public class ParameterController { @GetMapping("/monster/{id}/{name}") //接受两个路径参数 public String pathVariable(@PathVariable("id") Integer id, @PathVariable("name") String name, @PathVariable Map<String, String> map) { //这里的map指将所有的路径参数都放到map中 System.out.println("id" + id + " name:" + name); for (Map.Entry<String, String> entry : map.entrySet()) { System.out.println("key" + entry.getKey() + " value: " + entry.getValue()); } return "success"; //返回json给浏览器 } }
3.测试
2.细节说明
@PathVariable(“xxx”)必须跟{xxx}相对应
可以将所有的路径参数放到map中 @PathVariable Map
map 3.@RequestHeader 请求头获取信息
1.代码实例
1.index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>基本注解</h1> <hr/> <a href="/requestHeader">@RequestHeader-获取请求头信息</a> </body> </html>
2.ParameterController.java
package com.sun.springboot.controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestHeader; import org.springframework.web.bind.annotation.RestController; import java.util.Map; /** * @author 孙显圣 * @version 1.0 */ @RestController public class ParameterController { @GetMapping("/requestHeader") //获取请求头的信息 public String requestHeader(@RequestHeader("host") String host, @RequestHeader Map<String, String> header) { System.out.println("host" + host); System.out.println(header); return "success"; } }
3.测试
2.细节说明
请求头的信息都是以key - value的形式存储的
可以通过@RequestHeader(“xxx”)来获取xxx对应的value
也可以通过@RequestHeader Map
header将所有的key - value都封装到map中 4.@RequestParameter 请求获取参数信息
1.代码实例
1.index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>基本注解</h1> <hr/> <a href="/hi?hobby=打篮球&hobby=踢球">@RequestParam-请求参数</a> </body> </html>
2.ParameterController.java
package com.sun.springboot.controller; import org.springframework.web.bind.annotation.*; import java.util.List; /** * @author 孙显圣 * @version 1.0 */ @RestController public class ParameterController { @GetMapping("/hi") public String hi(@RequestParam(value = "name", defaultValue = "孙显圣") String name, @RequestParam("hobby") List<String> list) { System.out.println("name" + name); System.out.println(list); return "success"; } }
3.测试
2.细节说明
请求参数是可以设置默认值的,使用defaultValue属性即可
请求参数还可以将同名的结果封装到List中
请求参数也可以使用@RequestParameter Map
map 将所有参数封装到map中,但是如果有同名的结果只会得到第一个,因为map的key是唯一的 5.@CookieValue cookie获取值
1.代码实例
1.index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>基本注解</h1> <hr/> <a href="/cookie">@CookieValue-获取cookie的值</a> </body> </html>
2.ParameterController.java
package com.sun.springboot.controller; import org.springframework.web.bind.annotation.*; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; /** * @author 孙显圣 * @version 1.0 */ @RestController public class ParameterController { @GetMapping("/cookie") //这里可以设置required = false意为不是必须存在的,如果不存在则得到的值就为null //如果后面的参数类型是Cookie,则会获取Cookie对象并封装到变量中 public String cookie(@CookieValue(value = "cookie_key", required = false) String cookie_value, @CookieValue(value = "username" , required = false) Cookie cookie, HttpServletRequest request) { //使用原生api获取cookies Cookie[] cookies = request.getCookies(); for (Cookie cookie1 : cookies) { System.out.println(cookie1); } System.out.println(cookie_value); System.out.println("name:" + cookie.getName() + " value: " + cookie.getValue()); return "success"; } }
3.测试
2.细节说明
@CookieValue可以根据后面要封装的参数的类型来获取指定的值,如果后面的类型是Cookie类型则会获取一个Cookie对象并封装进入,如果是String类型则会获取Cookie的value来进行封装
还可以通过Servlet原生api的request来获取所有的cookie
@CookieValue中有属性required默认为true,意为必须存在,否则报错,如果设置为false,则如果获取不到则为null
6.@RequestBody 处理json请求,post请求体获取信息
1.代码实例
1.index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>基本注解</h1> <hr/> <form action="/requestBody" method="post"> <input type="text" name="username"><br> <input type="text" name="password"><br> <input type="submit" value="submit"> </form> </body> </html>
2.ParameterController.java
package com.sun.springboot.controller; import org.springframework.web.bind.annotation.*; /** * @author 孙显圣 * @version 1.0 */ @RestController public class ParameterController { @PostMapping("requestBody") public String getRequestBody(@RequestBody String requestBody) { //获取请求体 System.out.println(requestBody); return "success"; } }
3.测试
7.@RequestAttribute 请求域获取信息
1.代码实例
1.RequestController.java
package com.sun.springboot.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestAttribute; import org.springframework.web.bind.annotation.ResponseBody; import javax.servlet.http.HttpServletRequest; /** * @author 孙显圣 * @version 1.0 */ @Controller public class RequestController { @GetMapping("/login") public String login(HttpServletRequest request) { //在Request域中存放一些信息 request.setAttribute("name", "sun"); request.setAttribute("age", 13); //调用视图解析器,请求转发到/ok return "forward:/ok"; } @ResponseBody @GetMapping("/ok") public String ok(@RequestAttribute(value = "name", required = false) String name) { //使用注解来获取请求域中的信息并封装到参数中 System.out.println("name: " + name); return "success"; //返回json给浏览器 } }
2.配置视图解析器 application.yml
spring: mvc: view: #配置了视图解析器 suffix: .html #后缀 prefix: / #前缀,指的是根目录
3.测试
8.@SessionAttribute session域获取信息
1.代码实例
1.SessionController.java
package com.sun.springboot.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.SessionAttribute; import javax.servlet.http.HttpServletRequest; /** * @author 孙显圣 * @version 1.0 */ @Controller public class SessionController { @GetMapping("/login") public String login(HttpServletRequest request) { //在session域中设置信息 request.getSession().setAttribute("session", "session_value"); //调用视图解析器,请求转发到/ok return "forward:/ok"; } @ResponseBody @GetMapping("/ok") public String ok(@SessionAttribute(value = "session") String value) { //使用注解来获取session域中的信息并封装到参数中 System.out.println("session: " + value); return "success"; //返回json给浏览器 } }
2.配置视图解析器同上
3.测试
9.复杂参数
1.代码实例
1.RequestController.java
package com.sun.springboot.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestAttribute;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
* @author 孙显圣
* @version 1.0
*/
@Controller
public class RequestController {
@GetMapping("/login")
public String login(Map<String, Object> map, Model model, HttpServletResponse response) {
//给map封装信息
map.put("user", "sun");
map.put("job", "工程师");
//model封装信息
model.addAttribute("sal", 1000);
//结果最后都会封装到request域中
//调用视图解析器,请求转发到/ok
return "forward:/ok";
}
@ResponseBody
@GetMapping("/ok")
public String ok(@RequestAttribute("user") String user, @RequestAttribute("job") String job,
@RequestAttribute("sal") Integer sal) { //使用注解来获取请求域中的信息并封装到参数中
System.out.println("user:" + user + " job:" + job + " sal:" +sal);
return "success"; //返回json给浏览器
}
}
2.测试
2.HttpServletResponse给浏览器设置cookie
1.代码实例
package com.sun.springboot.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CookieValue;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletResponse;
/**
* @author 孙显圣
* @version 1.0
*/
@Controller
public class RequestController {
@GetMapping("/login")
public String login(HttpServletResponse response) {
Cookie cookie = new Cookie("cookie_name", "cookie_value");
response.addCookie(cookie);
//调用视图解析器,重定向到/ok,不能使用请求转发,因为虽然响应给客户端cookie了,
// 但是由于是请求转发,第二个controller得到的是最开始的请求,那时候还没有cookie
return "redirect:/ok";
}
@ResponseBody
@GetMapping("/ok")
public String ok(@CookieValue("cookie_name") Cookie cookie) {
//获取cookie
System.out.println("key:" + cookie.getName() + " value:" + cookie.getValue());
return "success"; //返回json给浏览器
}
}
2.测试
每日一言
"<!doctype html> <html lang="Zh-cn"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="robots" content="noindex,nofollow"> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/> <meta name="renderer" content="webkit"> <title>您请求的文件不存在!</title> <link type="text/css" rel="stylesheet" href="https://www.oick.cn/css/404.css" /> <link rel="shortcut icon" href="http://www.oick.cn/favicon.ico" type="image/x-icon" /> </head> <body> <div id="wrap"> <div> <img src="https://www.oick.cn/imgs/404.png" alt="404" /> </div> <div id="text"> <strong> <span></span> <a href="javascript:history.back()">返回上一页</a> </strong> </div> </div> <div class="animate below"></div> <div class="animate above"></div> </body> </html>"