본문 바로가기

Spring Boot

Query String / ?name=value&name=value

 url 주소에 데이터를 파라미터를 통해 넘기는 것을 말한다.

 

예) https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=0&ie=utf8&query=%EA%B5%AC%EA%B8%80 

이런 url이 있으면 ?부터 query string이 시작된다

 

where=nexearch

where의 값은 nexearch라는 뜻이고

 

& 부호가 나오면 다음 값을 의미한다

 

그래서 앞부분만 해석해보면

where=nexearch&sm=top 이면

where의 값은 nexearch이고 sm의 값은 top 이다 라고 해석하면된다

name=value 이런형태이다

 

예제)

@Controller
@RequestMapping("main2")
public class Controller03 {

    // /main2/sub1?address=seoul
    @RequestMapping("sub1")
    public void method1(WebRequest request){ // query string 값은 WebRequest 객체로 받는다
        System.out.println("Controller03.method1");
        String address = request.getParameter("address"); // getParameter("name값")으로 출력가능
        System.out.println("address = " + address);
    }
}

 

F12에서 네트워크 -> 페이로드 쪽 부분을 보면 query string으로 보내진 값을 볼 수 있다.

 


스프링에서는 이 동작을 @RequestParam("name값") 으로 대체한다.

@RequestMapping("sub3")
public void method3(@RequestParam("name") String name){ // spring에서 @RequestParam 어노테이션으로 처리
    System.out.println("Controller03.method3");
    System.out.println("name = " + name);
}

그리고 또한 어노테이션도 지워도 된다.

@RequestMapping("sub3")
public void method3(String name){
    System.out.println("name = " + name);
}

객체형태로 받을 수 도 있다.

!여기서 query string의 name 값은getter, setter이름이랑 매핑 된다

예를들어 email의 getter, setter 가 getFmail setFmail 인경우 query string의 값을 못받아 온다

class User{
    private String email;
    private Boolean married;
    private Integer age;
    private String info;

    getter...
    setter...
}

// main5/sub4?email=abc@naver.com&married=true&age=33&info=programmer
@RequestMapping("sub4")
public void method4(User user){
    System.out.println("email: " + user.getEmail());
    System.out.println("married: " + user.getMarried());
    System.out.println("age: " + user.getAge());
    System.out.println("info: " + user.getInfo());
}

 

 

'Spring Boot' 카테고리의 다른 글

@Compnent  (0) 2023.10.17
@SpringBootApplication 동작원리  (0) 2023.10.17
세션(session), 쿠키(cookie)  (0) 2023.09.26
Spring 기본 구조 및 흐름  (0) 2023.09.20
MySql과 스프링부트 DB 연동  (0) 2023.02.09