[ KOSTA 교육 30일차 ] Redirect vs Forward | PRG | QueryString & ResponseBody | REST | AJAX | XML vs JSON | 동기 vs 비동기 | Query String에 같은 key값이 많은 경우 & 서버에서 처리 | REST에서 보내는 데이터 타입, 받는 데이터 타입

junjun·2024년 5월 27일
0

KOSTA

목록 보기
27/48

객체를 가지고 페이지를 가려면,

Forwarding

Forwarding 시에는 해당 요청이 멱등한지를 항상 고려해야한다.

Redirect vs Forward

response.sendRedirect(” “)

  • 클라이언트 입장에서 다시 GET요청을 하게 됨.
  • 브라우저의 URL 창이 변함.
  • 새로 고침을 하더라도 최근의 요청은 GET이기에, GET요청만 다시 하게 됨.

request.getDispatcher( .. ).forward(request, response)

  • 페이지 전환이 일어나긴 하지만, URL 창이 방금의 요청
  • 새로고침하면 최근의 요청이 다시 일어남
  • 서블릿 자체의 제어권이 반복됨.

PRG ( Post - Redirect - Get ) Pattern

  • 제어권을 넘겼을 때, Forwarding 하기만 하면 최근의 요청이

form태그로 get 요청을 보내면, Query String에 게시글 내용도 붙음. ( 엄청 길어짐 )

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

  • URL : 필수 ( String )
- $.ajax({
		  accepts : { k : v },
		  async : true,
		  beforeSend : function(){},
		  complete : function(){},
		  contentType = "application/x-www-form-urlencoded; charset=UTF-8",
		  cache : true,
		  KEY:VAL,
  });
  • crossDomain
    • bank.kb.com 에서 요청을 했는데 bank.shinhan.com 으로 요청을 보내는 경우
    • 크로스 도메인. ( 윤승이 출금요청했는데 영롱 계좌로 입금하는 그런 경우 )
    • 특수 키워드 : 전송 데이터는 인코딩해서 보낸다.
  • JSON으로 생긴 데이터를 보낼 때
    • application/json : JSON 형식으로 데이터를 보낸다 명시하면 JSON으로 요청됨.
    • application/x-www-form-urlencoded : JSON으로 데이터를 보내도, 내부적으로 String으로 변환됨.
      • application/x-www-url-encoded 는 인코딩된 String을 나타냄.

Query String에 같은 KEY값이 많은 경우

  • getParameterValues() 로 받아짐
  • 취미 checkbox로 받을 때, 이와 같이 요청됨.

  • ajax의 속성 순서는 중요하지 않다.

REST에서 보내는 쪽 데이터 타입

  • str
  • JsonStr
  • JSON

REST에서 받는 쪽 데이터 타입

  • Str
  • JsonStr

6가지 경우의 수

0개의 댓글