文章目录
- 1.基本介绍
- 2.@PathVariable 路径参数获取信息
- 1.代码实例
- 1.index.html
- 2.ParameterController.java
- 3.测试
- 2.细节说明
- 3.@RequestHeader 请求头获取信息
- 1.代码实例
- 1.index.html
- 2.ParameterController.java
- 3.测试
- 2.细节说明
- 4.@RequestParameter 请求获取参数信息
- 1.代码实例
- 1.index.html
- 2.ParameterController.java
- 3.测试
- 2.细节说明
- 5.@CookieValue cookie获取值
- 1.代码实例
- 1.index.html
- 2.ParameterController.java
- 3.测试
- 2.细节说明
- 6.@RequestBody 处理json请求,post请求体获取信息
- 1.代码实例
- 1.index.html
- 2.ParameterController.java
- 3.测试
- 7.@RequestAttribute 请求域获取信息
- 1.代码实例
- 1.RequestController.java
- 2.配置视图解析器 application.yml
- 3.测试
- 8.@SessionAttribute session域获取信息
- 1.代码实例
- 1.SessionController.java
- 2.配置视图解析器(同上)
- 3.测试
- 9.复杂参数
- 1.代码实例
- 1.RequestController.java
- 2.测试
- 2.HttpServletResponse给浏览器设置cookie
-
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;
@RestController
public class ParameterController {@GetMapping("/monster/{id}/{name}") public String pathVariable(@PathVariable("id") Integer id, @PathVariable("name") String name,@PathVariable Map<String, String> 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"; }}
3.测试


2.细节说明
- @PathVariable(“xxx”)必须跟{xxx}相对应
- 可以将所有的路径参数放到map中 @PathVariable Map<String, String> 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;
@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<String, String> 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;
@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<String, String> 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;
@RestController
public class ParameterController {@GetMapping("/cookie")public String cookie(@CookieValue(value = "cookie_key", required = false) String cookie_value,@CookieValue(value = "username" , required = false) Cookie cookie, HttpServletRequest request) {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.*;
@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;
@Controller
public class RequestController {@GetMapping("/login")public String login(HttpServletRequest request) {request.setAttribute("name", "sun");request.setAttribute("age", 13);return "forward:/ok";}@ResponseBody@GetMapping("/ok")public String ok(@RequestAttribute(value = "name", required = false) String name) { System.out.println("name: " + name);return "success"; }
}
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;@Controllerpublic class SessionController {@GetMapping("/login")public String login(HttpServletRequest request) {request.getSession().setAttribute("session", "session_value");return "forward:/ok";}@ResponseBody@GetMapping("/ok")public String ok(@SessionAttribute(value = "session") String value) { System.out.println("session: " + value);return "success"; }}
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;
@Controller
public class RequestController {@GetMapping("/login")public String login(Map<String, Object> map, Model model, HttpServletResponse response) {map.put("user", "sun");map.put("job", "工程师");model.addAttribute("sal", 1000);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"; }
}
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;
@Controller
public class RequestController {@GetMapping("/login")public String login(HttpServletResponse response) {Cookie cookie = new Cookie("cookie_name", "cookie_value");response.addCookie(cookie);return "redirect:/ok";}@ResponseBody@GetMapping("/ok")public String ok(@CookieValue("cookie_name") Cookie cookie) {System.out.println("key:" + cookie.getName() + " value:" + cookie.getValue());return "success"; }
}
2.测试

