JPA

[JPA] 스프링부트에서의 간단한 요청과 응답 동작 방식

Song hyun 2024. 9. 26. 15:06
728x90
반응형

[JPA] 스프링부트에서의 간단한 요청과 응답 동작 방식

 

 

 

1. 클라이언트: /user 로 GET 요청을 한다. 이 요청은 톰캣-> 스프링부트 애플리케이션으로 전달된다.

2. 스프링 부트의 디스패쳐 서블릿이 요청을 받는다. 디스패쳐 서블릿은 요청된 URL을 분석하고, 이를 처리할 수 있는 컨트롤러와 메서드를 찾는다.

3.컨트롤러에서 비즈니스 로직이 필요할 떄, 비즈니스 및 퍼시스턴스 계층을 통해 데이터가 처리된다.

 

 

2. 시나리오 코드

package com.tenco.demo.controller;

import org.springframework.web.bind.annotation.RestController;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.ToString;

import java.util.Map;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;


@RestController // IoC -> @Controller + @ResponseBody 
// @RequestMapping
public class GetApiController {

    // 주소 설계 http://localhost:8080/hello
    @GetMapping("/hello")
    public String getMethodName() {
        // 메세지 컨버터가 동작한다.
        // StringHttpMessageConverter 객체가 동작함
        return "Say Hello~";
    }

    
    // 쿼리 스트링 방식(@RequestParam)
    // 주소 설계 http://localhost:8080/qs1?name=둘리
    @GetMapping("/qs1")
    public String qs1(@RequestParam(name="name") String param) {
        return "안녕 "+param+"야~";
    }
    
    // 주소 설계 http://localhost:8080/qs2?name=둘리&age=100000
    @GetMapping("/qs2")
    public String qs2(@RequestParam(name="name") String name,
                                    @RequestParam(name="age", required = false)Integer age) {
        return "안녕 "+age+"살 "+name+"야~";
    }
    
     // 주소 설계 http://localhost:8080/qs3?name=둘리&age=100000&groupId=com.tenco
     @GetMapping("/qs3")
     public String qs3(@RequestParam Map<String, String> data) {
        // Map 방식으로 동적 데이터 바인딩하기
        StringBuffer sb = new StringBuffer();
        data.entrySet().forEach(entry -> {
            System.out.println(entry.getKey());
            System.out.println(entry.getValue());
            System.out.println();
            sb.append(entry.getKey()+"="+entry.getValue());
        });
        return sb.toString();
     }

     // 쿼리 스트링 방식(@RequestParam)
    // 주소 설계 http://localhost:8080/qs4?name=둘리
    @GetMapping("/qs4")
    public String qs4(User user) {
        return user.toString(); 
    }
    

     // 클래스
     @AllArgsConstructor
     @Getter
     @ToString
     class User{
         private String name;
         private String age;
     }
}

 

728x90
반응형