객체를 가지고 페이지를 가려면,
Forwarding
Forwarding 시에는 해당 요청이 멱등한지를 항상 고려해야한다.
Redirect vs Forward
response.sendRedirect(” “)
- 클라이언트 입장에서 다시 GET요청을 하게 됨.
- 브라우저의 URL 창이 변함.
- 새로 고침을 하더라도 최근의 요청은 GET이기에, GET요청만 다시 하게 됨.
request.getDispatcher( .. ).forward(request, response)
- 페이지 전환이 일어나긴 하지만, URL 창이 방금의 요청
- 새로고침하면 최근의 요청이 다시 일어남
- 서블릿 자체의 제어권이 반복됨.
PRG ( Post - Redirect - Get ) Pattern
- 제어권을 넘겼을 때, Forwarding 하기만 하면 최근의 요청이
Query String과 RequestBody의 값은 request.getParameter() 로 꺼낼 수 있다.
스프링에서는 이를 @RequestParam 이라는 어노테이션을 통해 받아올 수 있다.
웹은 Flow
테스트 순서
- DAO, Model 부분 부터 test
- 완성 이후 Web 연결 부분 테스트
Flow 설계 ( Prototyping )
- 처음부터 Input - Output 설계를 해야함. ( Process )
REST와 AJAX
AJAX
- Asynchronous JavaScript And Xml
- 동기 : 요청을 하면 응답이 올 때까지 또다른 요청을 하지 못함
- 비동기 : (자판기) 먼저 눌렀다해서 먼저 나오는게 아님
- 버튼을 여러 개 누름.
- 요청을 하면 응답 순서가 보장이 안됨.
- 요청을 보내고 응답을 받기 전에 또다른 요청을 보낼 수 있음.
- 응답은 언제 올지 보장할 수 없음.
- 전송했을 때 Fail → Retry 횟수를 정할 수 있음.
XML = HTML의 확장 (eXtensive Markup Language )
- HTML은 디자인 용도
- XML은 디자인 용도가 아님, 데이터를 담기 위한 용도
- Tag명은 그냥 만드는 사람이 자유롭게 설정 가능.
XML, HTML 만이 웹 브라우저에서 인식 가능.
데이터
를 뿌려주는 용도 | 화면을 보여주는 용도
XML & JSON
form 태그 / Servlet으로 이동..
- 화면 번쩍.. 거리는 이슈 ( = 동기 통신 )
form 태그 / submit ⇒ 화면이 바뀐다.
비동기
- 버튼을 눌러 ⇒ 요청이 계속 간다. 화면은 그 자리..
- 응답이 오면, 응답이 보여져. 화면은 그자리에, 순서는 보장되지 않아.
비동기(Asynchronous)
: 데이터를 뭐로 보낼까?
-
XML
-
JSON
-
둘 중 하나를 가져가야..
-
클라이언트-서버 간 데이터를 주고받는 형식을 JSON으로 하자!
-
비동기 통신에 데이터를 주고받는 형식은 JSON이다.
JS에서 데이터를 주고받는.. 비동기 통신을 하는 것.
-
요새는 10줄, 1~2줄
- 정통 Script? ㄴ ㄴ
- 잘 주고 받기만 하면 됨. 축약형 표기만 사용 ㄱ ㄱ
-
JS에서 비동기 통신을 지원하는 기능
- AJAX (
스크립트에서 비동기 통신을 위한 기술
)
GET / POST
둘 다 지원
PUT / PATCH / DELETE
등의 HTTP Method
를 통한 데이터 통신 가능해짐.
AJAX
에서 주고받는 데이터 표기법 ⇒ JSON, XML, TEST, BINARY ( 이미지, 파일 등 )
- 구글 맵에 맛집을 치면, AJAX 요청으로 몇개 가져와서 항상 달라짐.
면접 질문) REST가 무엇인가요?
-
무조건 웹 서비스, 브라우저를 사용해야함. ( 인터넷 서비스 , 프로토콜은 HTTP )
-
REST로 서비스를 만들었다 = 웹으로 서비스를 만들었다는 뜻
-
웹 서비스를 위한 분산 시스템 아키텍처
입니다.
-
HTTP 프로토콜 사용
-
데이터 포맷 : JSON/XML 주로 사용
-
서버(프로바이더)가 정한 규칙에 맞게 요청을 해야 응답을 받을 수 있습니다.
-
개인정보 데이터 접근을 위해서는 토큰(OAuth2)을 이용한다.
-
개인 서비스를 개발하는 데에 여러 프로바이더의 서비스를 호출하여 개발하는 방식을 의미합니다.
-
분산 시스템 아키텍처라고 표현합니다.
-
데이터 전송방식으로 JSON 방식을 사용했습니다.
-
스크립트를 뭐 썼는지?
- jQuery를 사용했습니다. ( jQuery를 통한 Ajax 통신으로 가져왔습니다. )
$.ajax(url [, settings ]);
Ajax Settings
- $.ajax({
accepts : { k : v },
async : true,
beforeSend : function(){},
complete : function(){},
contentType = "application/x-www-form-urlencoded; charset=UTF-8",
cache : true,
KEY:VAL,
});
crossDomain
- JSON으로 생긴 데이터를 보낼 때
- application/json : JSON 형식으로 데이터를 보낸다 명시하면 JSON으로 요청됨.
- application/x-www-form-urlencoded : JSON으로 데이터를 보내도, 내부적으로 String으로 변환됨.
application/x-www-url-encoded
는 인코딩된 String을 나타냄.
Query String에 같은 KEY값이 많은 경우
- getParameterValues() 로 받아짐
- 취미 checkbox로 받을 때, 이와 같이 요청됨.

REST에서 보내는 쪽 데이터 타입
REST에서 받는 쪽 데이터 타입
6가지 경우의 수