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
반응형