본문 바로가기
컴퓨터/Spring

[Spring boot] 스프링 부트 컨트롤러 기본 코드

by 도도새 도 2023. 8. 2.

스프링 부트 컨트롤러

 

스프링 부트 프로젝트의 기본 컨트롤러 코드이다. 해당 코드의 목적은 url에 각 컨트롤러가 매핑되는 것을 확인하고, 리턴되는 값이 어떤 방식으로 보여지는지 확인하는 것이다.

 

설정은 아래 포스팅 내용을 따라간다.

https://doompa.tistory.com/390

 

[Spring Boot] 스프링 부트 시작하기

스프링 부트 시작하기 Spring Tool Suite 환경에서 프로젝트를 설정한다. (이클립스에서도 동일하게 설정하여 실행 가능하다.) utf -8 설정 utf-8으로 설정하면 한글 등이 깨지지 않는다. window → preferenc

doompa.tistory.com

 

@RestController
public class HelloController {

    @GetMapping("/")
    public String hello() {
        System.out.println("HelloController -----");

        return "안녕하세요";
    }

    @GetMapping("/test")
    public int test() {
        System.out.println("HelloController -----" + new Date());

        return 12;
    }

    @GetMapping("/human")
    public HumanDto human() {
        System.out.println("HelloController human() -----" + new Date());

        HumanDto human = new HumanDto(1, "길동", "여기");

        return human;
    }
}

위 코드에서 RestController를 사용하면 Controller + ResponseBody의 의미를 모두 가진다.

이때 기본 자료형은 기본 자료형으로 넘어가고, Object는 Json형식으로 반환된다.

위 코드에서 /human 경로로 접속하게 되면 human이 json형식으로 반환되는 것을 확인할 수 있다.

 

/human url에서 반환되는 값

{
	"number":1,
    "name":"sada",
    "address":"dasdas"
}

 

해당 컨트롤러에서 사용하는 Dto 클래스는 아래의 형태이다.

public class HumanDto {
    private int number;
    private String name;
    private String address;

    public HumanDto(int number, String name, String address) {
        super();
        this.number = number;
        this.name = name;
        this.address = address;
    }

}

 

 

쿼리 파라미터 받기

 

아래의 형태로 쿼리 파라미터를 받을 수 있다.

@GetMapping("conn_param")
    public String conn_param(int num, String str) {
        System.out.println("HelloController conn_param() -----" + new Date());
        System.out.println("num : " + num + " str : " + str);

        return "success";
    }

브라우저 url <<http://localhost:3100/conn_param?num=12&str="고고고">>

 

 

출력값

HelloController conn_param() -----Wed Aug 02 11:33:53 KST 2023
num : 12 str : "고고고"

url의 쿼리 파라미터를 컨트롤러 메서드의 파라미터로 들어오는 것을 확인할 수 있다.

 

쿼리 파라미터 dto객체로 바인딩하여 받기

 

@GetMapping("param_obj")
    public String param_obj(HumanDto h) {
        System.out.println("HelloController param_obj() -----" + new Date());
        System.out.println(h.toString());

        return "success";
    }

 

브라우저 url <<http://localhost:3100/param_obj?number=123&name="이름"&address="여기">>

출력값

HelloController param_obj() -----Wed Aug 02 11:40:35 KST 2023
HumanDto [number=123, name="이름", address="여기"]

 

 

리스트 객체 넘기기

@GetMapping("getlist")
    public List<HumanDto> getlist(){
        List<HumanDto> list = new ArrayList<HumanDto>();

        list.add(new HumanDto(1, "이름1", "부산"));
        list.add(new HumanDto(2, "이름2", "서울"));
        list.add(new HumanDto(3, "이름3", "전주"));

        return list;
    }

 

위 리스트 객체는 아래의 json 형식으로 출력된다.

 

 

출력값

[
  {
    "number": 1,
    "name": "이름1",
    "address": "부산"
  },
  {
    "number": 2,
    "name": "이름2",
    "address": "서울"
  },
  {
    "number": 3,
    "name": "이름3",
    "address": "전주"
  }
]

 

맵 객체 넘기기

  • 맵은 키:값의 쌍을 가지는 객체이다. 키에 String 값에 List를 가지는 맵 객체는 아래의 제이손 형식으로 반환된다.
@GetMapping("getMap")
    public Map<String, List<HumanDto>> getMap(){
        Map<String, List<HumanDto>> map = new HashMap<String, List<HumanDto>>();
        List<HumanDto> list1 = new ArrayList<HumanDto>();

        list1.add(new HumanDto(1, "이름1", "부산"));
        list1.add(new HumanDto(2, "이름2", "서울"));
        list1.add(new HumanDto(3, "이름3", "전주"));


        List<HumanDto> list2 = new ArrayList<HumanDto>();

        list2.add(new HumanDto(1, "이름1", "부산"));
        list2.add(new HumanDto(2, "이름2", "서울"));
        list2.add(new HumanDto(3, "이름3", "전주"));

        map.put("리스트 1번", list1);
        map.put("리스트 2번", list2);

        return map;
    }

 

출력값

{
  "리스트 2번": [
    {
      "number": 1,
      "name": "이름1",
      "address": "부산"
    },
    {
      "number": 2,
      "name": "이름2",
      "address": "서울"
    },
    {
      "number": 3,
      "name": "이름3",
      "address": "전주"
    }
  ],
  "리스트 1번": [
    {
      "number": 1,
      "name": "이름1",
      "address": "부산"
    },
    {
      "number": 2,
      "name": "이름2",
      "address": "서울"
    },
    {
      "number": 3,
      "name": "이름3",
      "address": "전주"
    }
  ]
}

즉, 제이손 객체 내에 우선 맵 객체의 각 키값으로 객체가 들어가고, 그 내부에 list가 배열 형태로 들어가는 것을 확인할 수 있다.

댓글