기록양식 (TIL)
1. 사용 개념
2. 의문점 or 문제
3. 시도해 본 것들(+응용) or 삽질
4. 해결
5. 알게 된 점(회고)
Front controller를 쓰기전에 survlet의 작동방식
![]() | ![]() |
---|
왼:
Servlet
오:DispatcherServlet
Controller
개념만 봐서는 무슨 말인지 이해가 안간다. 저거를 활용해서 뭐를 도대체 한다는 것인지
- 클라이언트가 서버에 요청을 한다.
- 요청한 데이터는
DispatcherServlet
을 거쳐Handler Mapping
으로 넘어간다/api/주소
를getmapping
postmapping
등의 명령어를 컨트롤러에서 import 시킨다.- 요청받은 데이터를
Controller
에서 중간다리? 역할을 한다.
3-1. 데이터와 연결된entity / class
, 사용자 요청인dto / request,response
를 종합하여 데이터와, view정보를DispatcherServlet
에 전송 >view resolver
view
를 통해 서버에서 클라이언트로 response 보낸다.
📟 예제
1. @Controller
public class HelloController {
2. @GetMapping("/api/hello")
3. @ResponseBody
public String hello() {
return "Hello World!";
}
}
@Controller
>컨트롤러 부여@GetMapping("/api/hello")
클라이언트로부터 받은/api/hello
를Mapping
방식으로 가져옴@ResponseBody
컨트롤러가 반환하는 Java의 객체를 Json형태로 반환
@PutMapping("/memos/{id}")
public Long updateMemo(@PathVariable Long id, @RequestBody MemoRequestDto requestDto) {
// 해당 메모가 DB에 존재하는지 확인
Memo memo = findById(id);
- RequestBody : 클라이언트 요청의 본문(Body)
JSON
형태를 >JAVA객체
로 변환- ResponseBody : 컨트롤러가 반환하는
Java객체
>JSON
형태로 다시 반환- PathVariable :
mapping
에서 가져오는url
일부를 메서드의 매개변수로 받기위해 사용 >/memos/P{id}
>(@PathVariable Long id~,
로 받음Memo memo
> 기존entity
객체에 기본생성자 외에, id를 매개변수로 받는 생성자를 새로 생성해서 id데이터도 받을 수 있게 작성결국은 controller내에서
entity
<>dto
의 데이터를 주고받고 조정
.
.
.