Heim >Java >javaLernprogramm >Welche Annotationen verwendet SpringBoot zum Empfangen von Parametern?

Welche Annotationen verwendet SpringBoot zum Empfangen von Parametern?

WBOY
WBOYnach vorne
2023-05-10 15:49:331847Durchsuche

1. Grundlegende Einführung Anwendungsbeispiel für den Empfang von Parametern

1. Demonstrieren Sie verschiedene Möglichkeiten zum Senden von Daten/Parametern an den Server und wie der Server Anmerkungen verwendet, um sie zu empfangen /parameters an den Server und wie der Server sie verwendet. Empfangen von Anmerkungen

Erstellen Sie srcmainresourcesstaticindex.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>index</title>
</head>
<body>
<h2>hello, llp</h2>
基本注解:
<hr/>
<a href="/monster/200/jack" rel="external nofollow" >@PathVariable-路径变量 monster/200/jack</a><br/><br/>
</body>
</html>

@PathVariable. Verwenden Sie

Demo @PathVariable. Erstellen Sie srcmainjavacomllpspringbootcontrollerParameterController.java. Schließen Sie den Test ab e

@Request Header verwendet Welche Annotationen verwendet SpringBoot zum Empfangen von Parametern?

, um die Verwendung von @RequestHeader zu demonstrieren und den Test abzuschließen

√ Ändern Sie index.html

@RestController
public class ParameterController {
    /**
     * /monster/{id}/{name} 解读
     * 1. /monster/{id}/{name} 构成完整请求路径
     * 2. {id} {name} 就是占位变量
     * 3. @PathVariable("name"): 这里name 和{name} 命名保持一致
     * 4. String name_ 这里自定义,和{name}命名无关
     * 5. @PathVariable Map<String, String> map 把所有传递的值传入map
     * 6. 可以看下@PathVariable源码
     */
    @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);
        System.out.println("name-" + name);
        System.out.println("map-" + map);
        return "success";
    }
}

@RequestParam Verwenden Sie Welche Annotationen verwendet SpringBoot zum Empfangen von Parametern?

Demo @RequestParam verwenden, ParameterController.java ändern, Test abschließen

√ Index .html ändern

<a href="/requestHeader" rel="external nofollow" >@RequestHeader-获取Http请求头 </a><br/><br/>

√ ParameterController.java ändern

/**
 * @RequestHeader("Host") 获取http请求头的 host信息
 * @RequestHeader Map<String, String> header: 获取到http请求的所有信息
 */
@GetMapping("/requestHeader")
public String requestHeader(@RequestHeader("host") String host,
                            @RequestHeader Map<String, String> header,
                            @RequestHeader("accept") String accept) {
    System.out.println("host-" + host);
    System.out.println("header-" + header);
    System.out.println("accept-" + accept);
    return "success";
}

@CookieValue Verwenden Sie

, um die Verwendung von @CookieValue zu demonstrieren, ändern Sie ParameterController.java , schließen Sie den Test ab. Ändern Sie index.html √ Ändern Sie index.html

<a href="/hi?name=wukong&fruit=apple&fruit=pear&id=300&address=北京" rel="external nofollow" >@RequestParam-获取请求参数</a><br/><br/>
Welche Annotationen verwendet SpringBoot zum Empfangen von Parametern?√ Ändern Sie ParameterController.java

/**
 * @param username wukong
 * @param fruits  List<String> fruits 接收集合 [apple, pear]
 * @param paras Map<String, String> paras 如果我们希望将所有的请求参数的值都获取到,
 *              可以通过@RequestParam Map<String, String> paras这种方式
 *             一次性的接收所有的请求参数 {name=wukong, fruit=apple, id=300, address=北京}
 *             如果接收的某个参数中有多个之值比如这里fruits是一个集合,从map中只能拿到一个
 *              可以理解map底层会将相同的key的value值进行覆盖
 * @return
 * @RequestParam
 */
@GetMapping("/hi")
public String hi(@RequestParam(value = "name") String username,
                 @RequestParam("fruit") List<String> fruits,
                 @RequestParam Map<String, String> paras) {
    //username-wukong
    System.out.println("username-" + username);
    //fruit-[apple, pear]
    System.out.println("fruit-" + fruits);
    //paras-{name=wukong, fruit=apple, id=300, address=北京}
    System.out.println("paras-" + paras);
    return "success";
}

@RequestAttribute und verwenden Sie @SessionAttribute

Demo @RequestAttribute @SessionAttribute wird verwendet, erstellen Sie com/hspedu/web/controller/RequestController.java, schließen Sie den Test ab

√ index.html ändern

<a href="/cookie" rel="external nofollow" >@CookieValue-获取cookie值</a><br/><br/>

√ RequestController.java erstellen

3. Komplexe Parameter

1. Grundlegende Einführung

In der Entwicklung unterstützt SpringBoot auch komplexe Parameter Welche Annotationen verwendet SpringBoot zum Empfangen von Parametern?

Map, Model, Errors/BindingResult, RedirectAttributes, ServletResponse, SessionStatus, UriComponentsBuilder, ServletUriComponentsBuilder, HttpSession

Map- und Modelldaten werden im Anforderungsfeld und im zugrunde liegenden request.setAttribute()

platziert

RedirectAttributes leitet Daten weiter

2. Anwendungsbeispiele für komplexe Parameter

####1 Beschreibung: Demonstrieren Sie die Verwendung komplexer Parameter, konzentrieren Sie sich auf: Karte, Modell, ServletResponse

/**
 * 因为我的浏览器目前没有cookie,我们可以自己设置cookie[技巧还是非常有用]
 * 如果要测试,可以先写一个方法,在浏览器创建对应的cookie
 * 说明 1. value = "cookie_key" 表示接收名字为 cookie_key的cookie
 * 2. 如果浏览器携带来对应的cookie , 那么 后面的参数是String ,则接收到的是对应对value
 * 3. 后面的参数是Cookie ,则接收到的是封装好的对应的cookie
 */
@GetMapping("/cookie")
public String cookie(@CookieValue(value = "cookie_key", required = false) String cookie_value,
                     HttpServletRequest request,
                     @CookieValue(value = "username", required = false) Cookie cookie) {
    System.out.println("cookie_value-" + cookie_value);
    if (cookie != null) {
        System.out.println("username-" + cookie.getName() + "-" + cookie.getValue());
    }
    System.out.println("-------------------------");
    Cookie[] cookies = request.getCookies();
    for (Cookie cookie1 : cookies) {
        System.out.println(cookie1.getName() + "=>" + cookie1.getValue());
    }
    return "success";
}
Welche Annotationen verwendet SpringBoot zum Empfangen von Parametern?

4. Benutzerdefinierte Objektparameter – automatische Kapselung

unterstützt Kaskadenverpackung

  • 2. Benutzerdefinierte Objektparameter – Anwendungsbeispiele

  • 1. Anforderungsbeschreibung: Selbstdemonstration Definieren Sie die Verwendung von Objektparametern und vervollständigen Sie die automatische Kapselung und Typkonvertierung
  • 2. Code-Implementierung

    1. Erstellen Sie srcmainresourcesstaticsave.html
  • <hr/>
    <h2>测试@RequestBody获取数据: 获取POST请求体</h2>
    <form action="/save" method="post">
        姓名: <input name="name"/> <br>
        年龄: <input name="age"/> <br/>
        <input type="submit" value="提交"/>
    </form>
  • 2. Ändern Sie srcmainjavacomllpspringbootcontrollerParameterController.java

    /**
     * @RequestBody 是整体取出Post请求内容
     */
    @PostMapping("/save")
    public String postMethod(@RequestBody String content) {
        System.out.println("content-" + content);
        return "success";
    }

Das obige ist der detaillierte Inhalt vonWelche Annotationen verwendet SpringBoot zum Empfangen von Parametern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen