url 주소에 데이터를 파라미터를 통해 넘기는 것을 말한다.
이런 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 |