> Java > java지도 시간 > 매개변수를 수신하기 위해 SpringBoot가 사용하는 주석은 무엇입니까?

매개변수를 수신하기 위해 SpringBoot가 사용하는 주석은 무엇입니까?

WBOY
풀어 주다: 2023-05-10 15:49:33
앞으로
1845명이 탐색했습니다.

1. 기본 소개

SpringBoot는 클라이언트가 제출한 데이터/매개변수를 받을 때 관련 설명을 사용합니다.

@PathVariable, @RequestHeader, @ModelAttribute, @RequestParam, @MatrixVariable, @CookieValue, @RequestBody

2. 파라미터 수신 관련 Annotation 적용 예시

1. 요구 사항: 데이터/파라미터를 서버에 제출하는 다양한 방법과 서버가 이를 수신하기 위해 어떻게 Annotation을 사용하는지 시연

2. 적용 예시 시연

요구사항: 데이터를 제출하는 다양한 방법 시연 /parameters를 서버에 추가하고 서버가 이를 사용하는 방법 주석 수신

매개변수를 수신하기 위해 SpringBoot가 사용하는 주석은 무엇입니까?

Create 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 사용

Demo @PathVariable 사용, srcmainjavacomllpspringbootcontrollerParameterController.java 생성, 테스트 완료

@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";
    }
}
로그인 후 복사

매개변수를 수신하기 위해 SpringBoot가 사용하는 주석은 무엇입니까?

@Request Header는

를 사용하여 @RequestHeader를 수정하고 테스트

√ ParameterController.java

<a href="/requestHeader" rel="external nofollow" >@RequestHeader-获取Http请求头 </a><br/><br/>
로그인 후 복사

매개변수를 수신하기 위해 SpringBoot가 사용하는 주석은 무엇입니까?@RequestParam 사용 데모 @RequestParam 사용, ParameterController.java 수정, 테스트 완료

√ 인덱스 .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";
}
로그인 후 복사

√ 수정 ParameterController.java

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

@CookieValue 수정 @CookieValue 사용을 보여주기 위해

사용 , 테스트를 완료하세요

√ √ 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";
}
로그인 후 복사

√ ParameterController.java

<a href="/cookie" rel="external nofollow" >@CookieValue-获取cookie值</a><br/><br/>
로그인 후 복사

@RequestAttribute를 수정하고 @SessionAttribute를 사용하세요.

Demo @RequestAttribute @SessionAttribute를 사용하고 com/hspedu/web/controller/RequestController.java를 생성하세요.

√ index.html매개변수를 수신하기 위해 SpringBoot가 사용하는 주석은 무엇입니까?

/**
 * 因为我的浏览器目前没有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";
}
로그인 후 복사

√ Create RequestController.java

<hr/>
<h2>测试@RequestBody获取数据: 获取POST请求体</h2>
<form action="/save" method="post">
    姓名: <input name="name"/> <br>
    年龄: <input name="age"/> <br/>
    <input type="submit" value="提交"/>
</form>
로그인 후 복사

3. 복잡한 매개변수

1. 기본 소개

SpringBoot는 클라이언트 요청에 응답할 때 복잡한 매개변수도 지원합니다.

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

매개변수를 수신하기 위해 SpringBoot가 사용하는 주석은 무엇입니까?

Map 및 Model 데이터는 요청 필드에 배치되고 기본 request.setAttribute()

RedirectAttributes 리디렉션은 데이터를 전달합니다
  • 2. 복잡한 매개변수의 적용 예
  • ####1. 설명: 복잡한 매개변수를 보여줍니다. 사용, 초점: Map, Model, ServletResponse

    2. 코드 구현
  • /**
     * @RequestBody 是整体取出Post请求内容
     */
    @PostMapping("/save")
    public String postMethod(@RequestBody String content) {
        System.out.println("content-" + content);
        return "success";
    }
    로그인 후 복사
  • 4. 사용자 정의 개체 매개변수 - 자동 캡슐화
  • 1. 기본 소개

개발 중에 SpringBoot는 요청 시 사용자 정의 개체 매개변수

를 지원하여 자동 유형 변환 및 서식 지정을 완료합니다.

캐스케이드 패키징 지원 매개변수를 수신하기 위해 SpringBoot가 사용하는 주석은 무엇입니까?

2. 사용자 정의 개체 매개 변수 - 응용 프로그램 예

1. 요구 사항 설명: 데모 자체 개체 매개 변수 사용을 정의하고 자동 캡슐화 및 유형 변환을 완료합니다
  • 2. 1. srcmainresourcesstaticsave.html
  • <a href="/login" rel="external nofollow" >@RequestAttribute、@SessionAttribute-获取request域、session属性-</a>
    로그인 후 복사

    2를 생성합니다. 2. srcmainjavacomllpspringbootcontrollerParameterController.java

        @GetMapping("/login")
        public String login(HttpServletRequest request) {
            request.setAttribute("user", "llp");
            //向session中添加数据
            request.getSession().setAttribute("website", "http://www.baidu.com");
            //这里需要使用forward关键字,如果不适用则会走视图解析器,这
            //里视图解析器前缀配置的是/  后缀配置的.html  ---> /ok.html
            //而请求转发在服务器端执行,/被解析成 ip:port/工程路径
            //进而最终得到的完整路径是 ip:port/工程路径/ok.html
            //但是我们这里希望访问的是 ip:port/工程路径/ok这个请求路径
            //因此这里手动的设置forward:/ok ,底层会根据我们设置的路径进行请求转发
            return "forward:/ok";
        }
        @GetMapping("ok")
        //返回字符串,不走视图解析器
        @ResponseBody
        public String ok(@RequestAttribute(value = "user", required = false) String username,
                         @SessionAttribute(value = "website",required = false) String website, HttpServletRequest request) {
            System.out.println("username= " + username);
            System.out.println("通过servlet api 获取 username-" +  request.getAttribute("user"));
            System.out.println("website = " + website);
            System.out.println("通过servlet api 获取 website-"+request.getSession().getAttribute("website"));
            return "success";
        }
    }
    로그인 후 복사
  • 을 수정합니다.

  • 위 내용은 매개변수를 수신하기 위해 SpringBoot가 사용하는 주석은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿