Rumah >Java >javaTutorial >Apakah anotasi yang digunakan oleh SpringBoot untuk menerima parameter?

Apakah anotasi yang digunakan oleh SpringBoot untuk menerima parameter?

WBOY
WBOYke hadapan
2023-05-10 15:49:331849semak imbas

1. Pengenalan asas

SpringBoot akan menggunakan anotasi yang berkaitan apabila menerima data/parameter yang diserahkan oleh pelanggan

Penjelasan terperinci tentang @PathVariable, @RequestHeader, @ModelAttribute, @RequestParam, @MatrixVariable , @CookieValue , @RequestBody

2 Terima contoh aplikasi anotasi berkaitan parameter

1 Keperluan: Tunjukkan pelbagai cara untuk menyerahkan data/parameter ke pelayan dan cara pelayan menggunakan anotasi untuk. terima

2 .Demonstrasi contoh aplikasi

Keperluan: Tunjukkan pelbagai cara untuk menyerahkan data/parameter ke pelayan, dan cara pelayan menggunakan anotasi untuk menerima

Apakah anotasi yang digunakan oleh SpringBoot untuk menerima parameter?

@RequestHeader menggunakan

Tunjukkan penggunaan @RequestHeader, ubah suai ParameterController.java, lengkapkan ujian

√ >√ Ubah suai ParameterController.java

<!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>

Apakah anotasi yang digunakan oleh SpringBoot untuk menerima parameter?

@RequestParam Gunakan

untuk menunjukkan penggunaan @RequestParam, ubah suai ParameterController.java, lengkapkan ujian

√ Ubah suai 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";
    }
}

√ Ubah suai ParameterController.java

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

@CookieValue GunakanApakah anotasi yang digunakan oleh SpringBoot untuk menerima parameter?

untuk menunjukkan penggunaan @CookieValue. java, selesaikan ujian

√ Ubah suai index.html

/**
 * @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";
}

√ 🎜>

untuk menunjukkan penggunaan @RequestBody, ubah suai ParameterController.java, lengkapkan ujian

√ Ubah suai html

<a href="/hi?name=wukong&fruit=apple&fruit=pear&id=300&address=北京" rel="external nofollow" >@RequestParam-获取请求参数</a><br/><br/>

@RequestAttribute dan @SessionAttribute untuk menggunakan

untuk menunjukkan penggunaan @RequestAttribute @SessionAttribute dan mencipta com/hspedu/web/controller/RequestController .java, lengkapkan ujian

√ ubah suai index.html

/**
 * @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";
}

√ buat RequestController.java

<a href="/cookie" rel="external nofollow" >@CookieValue-获取cookie值</a><br/><br/>
Apakah anotasi yang digunakan oleh SpringBoot untuk menerima parameter?

3 Parameter kompleks

1

Semasa pembangunan, SpringBoot turut menyokong parameter kompleks apabila bertindak balas kepada permintaan pelanggan

Peta, Model, Ralat/BindingResult, RedirectAttributes, ServletResponse, SessionStatus, UriComponentsBuilder ServletUriComponentsBuilder, HttpSession

Data Peta dan Model akan diletakkan dalam medan permintaan, dan permintaan yang mendasari.setAttribute()

Apakah anotasi yang digunakan oleh SpringBoot untuk menerima parameter?

RedirectAttributes redirect carries data

2. Contoh aplikasi parameter kompleks
  • ####1: Tunjukkan parameter kompleks Penggunaan, fokus: Peta, Model, ServletResponse

    2. Pelaksanaan kod
  • /**
     * 因为我的浏览器目前没有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";
    }
  • 4 Parameter objek tersuai - enkapsulasi automatik
  • 1 🎜>Dalam pembangunan, SpringBoot turut menyokong parameter objek tersuai apabila menjawab permintaan pelanggan

  • Jenis automatik lengkap Penukaran dan pemformatan

Sokong pembungkusan lata

2. Parameter objek tersuai - contoh aplikasi

1. Huraian Keperluan: Menunjukkan penggunaan parameter objek tersuai, melengkapkan pengekapan automatik dan penukaran jenisApakah anotasi yang digunakan oleh SpringBoot untuk menerima parameter?

2. Pelaksanaan kod

    1. Cipta 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. >

Atas ialah kandungan terperinci Apakah anotasi yang digunakan oleh SpringBoot untuk menerima parameter?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam