- 웹브라우저가 서버에 요청(HTTP Request)을 전달한다.
이 요청에는 요청 대상을 가르키는 URL이 담겨있다.
(URL : http://localhost:8088/first/test3)- 웹브라우저로부터 서버에 전달된 요청을 Spring Web MVC 엔진이 받는다.
스프링 엔진은 요청된 URL과 일치하는 컨트롤러 액션 메소드를 찾아서 호출한다.
(FirstController 클래스의 test3()액션 메소드 호출)- Firstcontroller의 test3() 액션 메소드는 JAVA 객체를 리턴한다. (Product 객체 리턴)
- 리턴된 JAVA객체는, Spring Web MVC 엔진에 의해서 JSON 형태의 문자열로 변경된다.
( {”name”:”맥주”, “unitCost”:2000, “quantity”:120} )- JSON 형태의 문자열이 웹브라우저에 전송된다.
이 전송은 최초 웹브라우저의 요청(http request) 에 대한 응답 (http response) 이다.- 웹 서버로부터 전송된 JSON 형태의 문자열이 웹브라우저에 표시된다.
- 웹브라우저가 서버에 요청(HTTP Request)을 전달한다.
이 요청에는 요청 대상을 가르키는 URL이 담겨있다.- 웹브라우저로부터 서버에 전달된 요청을 Spring Web MVC 엔진이 받는다.
스프링 엔진은 요청된 URL과 일치하는 컨트롤러 액션 메소드를 찾아서 호출한다.- 컨트롤러의 액션메소드는 데이터를 Model 객체에 넣는다.
- 컨트롤러의 액션메소드는 뷰의 이름을 리턴한다.
- 그 이름의 뷰가 실행
- 뷰는 Model 객체에서 데이터를 꺼내서 출력하고 , HTML태그들도 출력한다.
- 뷰가 출력한 HTML 태그들이 웹브라우저에 전송된다.
이 전송은 최초 웹브라우저의 요청 (http request)에 대한 응답(http response)이다.- 웹 서버로부터 전송된 HTML 태그들이 웹브라우저에 표시된다.
RestController vs Controller
REST API
사용자가 전달하는 값을 1:1로 매핑해주는 어노테이션 , 보통 파라미터 값을 전달할 때 사용
1) 파라미터 이름 지정하고 받기
@Controller
public class request_mapping {
@RequestMapping("/request_mapping")
public String visit(@RequestParam(name = "name") String name,
@RequestParam(name = "age") Integer age,
Model model) {
model.addAttribute("name", name);
model.addAttribute("age", age);
return "home";
}
}
2) 파라미터 이름 생략
@Controller
public class request_mapping {
@RequestMapping("/request_mapping")
public String visit(@RequestParam String name,
@RequestParam Integer age,
Model model) {
model.addAttribute("name", name);
model.addAttribute("age", age);
return "home";
}
}
3) 어노테이션 생략
@Controller
public class request_mapping {
@RequestMapping("/request_mapping")
public String visit(String name,
Integer age,
Model model) {
model.addAttribute("name", name);
model.addAttribute("age", age);
return "home";
}
}
GET : 서버의 데이터 조회
POST : 서버에 데이터 삽입 ( 보통 삽입, 수정, 삭제 요청을 구별하지않고 POST로 요청한다고함 )
PUT : 서버에 데이터 수정
DELETE : 서버에 데이터 삭제
GET, POST, PUT, DELETE가 대표적
HEAD: 서버 리소스의 헤더(메타 데이터의 취득)
OPTIONS: 리소스가 지원하고 있는 메소드의 취득
PATCH: 리소스의 일부분을 수정
CONNECT: 프록시 동작의 터널 접속을 변경
4, 5로 시작하는 코드는 정상적인 상황이 아니기 때문에 사이트 관리자가 즉시 알아야 하는 정보
참고 : https://www.whatap.io/ko/blog/40/
1) 인터넷을 통해 전송할 수 있는 문자는 오로지 ASCII 문자이기 때문에 인코딩해줘야함 .
변환하는 규칙은 UTF-8 을 따른다. (한글문자 1개 : 3바이트)
따라서 '피그'는 6바이트로, '브라더'는 9바이트로 인코딩 된 모습을 볼 수 있다.
2) &는 아스키코드지만 문자 자체로 의미를 전달하고싶으므로 %26으로 인코딩했다.
3) 공백문자는 허용되지않으므로 공백 문자는 '%20' 혹은 '+'로 인코딩된다.