2020-11-25

jsbak·2020년 11월 25일
0

리퀘스트
자원 요청의 목적, 어떤 목적으로 요청을 날리냐

요청 메서드
1. 목적이나 의도라는 표현이 들어가야함.
2. 요청의 형태가 달라진다

바디는 내가 메시지를 보낼게 있을때 만 필요(POST일 경우)

httpRequest 요청 메서드 (Default : GET)
1.목적(바디 영역 존재 유뮤, 메서드는 수단이다.) 2.방식

요청메서드가 중요해서 강조하는 것이다.

parameter PART의 차이?
1. part는 자기의 라인 헤더를 가지고 있다? >> part하나가 하나의 섹션을 구성하고 있다.
섹션안에 자기만의 헤더를 가지고 있다. 자기만의 섹션, 헤더를 구성하고 있다. 파트안에 들어가는 데이터 타입이 다 다를 수 있다. 하나의 파트를 통해서 엑셀과 pdf파일을 동시에 보낼수 있다는 의미가 된다.

데이터의 타입이 다르다 파라미터(문자열), 파트(2진 데이터, 바이너리 데이터, 그래서 각각의 파트가 자기만의 어떤 데이터라는걸, Content-Type을 통해서 mime을 통해서 보내게된다.)

모델 1이냐 모델 2이냐
1. 클라이언트가 가상의 url(~.do)로 요청을 보낸다
2. 가상의 url에 해당되는 서블릿이 받아서 요청 분석
JSP 템플릿 기반 그래서 정적인 텍스트가 더 많다 (클라이언트 사이드 언어)
3. 컨텐츠를 만들어낸다.
4. 컨텐츠를 서블릿에서 JSP에 보내야한다(공유해야한다, 컨테이너가 객체의 라이프 사이클을 관리하기 때문에 직접 공유가 불가하다, 그래서 서버사이드 영역에서 공유해야할 스코프 영역이 존재하는 것이다.)
5. 공유된 데이터를 누가 꺼내서 쓸 것인지 JSP를 정해야한다.(뷰를 선택)
6. 선택된 UI VIEW로 간다.
(모든건 상식 선에서??!!!!)

이렇게 분리된 녀석이 모델 2이며, 여기서 핵심이 되는 녀석이 SCOPE 이다 그래서 스코프 영역을 제대로 이해해야한다. 중프 코드랑 반드시 비교해봐야한다네

모델2 :
구조가 조각나있다 -> 코드 분석이 어렵다.
대규모 프로젝트에 사용,
SOLID(객체지향)
SRP : Single Reponsibility Principle
하나의 클래스는 하나의 책임만을 갖도록 하라. 변경사항이 생길시 그 변경사항이 있는 녀석만 바꾸면된다.(ibatis -> mybatis바꾸면 DAO만 바꾸면된다?)

모델 1의 보안의 취약점을 보완

모델1 : 요청과 응답하는 위치가 동일
가독성이 떨어진다.
구조가 심플하다 -> 코드 분석이 쉽다.
외부서 접근이 가능하다? 원래 소스를 가져갈 수 있다.(보안에 굉장히 취약하다.)

MVC의 단점
Controller에 너무 많은 것이 몰려있다.

오늘 수업

요청 헤더를 적극적으로 가지고 놀아보자

각 브라우저에서 헤더라 어떻게 다른지 확인해야함..
User-Agent의 브라우저 확인 방법??
참고 : https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent

Edge는 크롬으로 만든 엔진을 이용한다. 그래서 user-Agent에 크롬에 나옴
WebKit -> AppleWebKit

생명의 길이 (큰 순서)
변수 static -> 인스턴스 -> 지역(메서드)안 변수 -> 블록변수

jsp 안에 쓴 변수는 지역변수이면서 블록변수이다
jsp 가 서블릿이 아니였다면 지역변수가 존재할 수 없었다.
따라서 스크립트릿 기호를 사용해서 만든 모든 변수는 다 지역변수이자 블록변수이다.

Enum도 클래스

디렉티브 지시자, 스크립트릿에서 @있는 녀석
선언부인 !는 잘안쓰임 // 어디서 선언함과 상관 없이 전역멤버이기에 맨 위로 올려버림

JSP에서 지향 하는 코드 : 데이터를 그냥 받아서 그거만 뿌려주는 역할

accept-language

이걸로 어떻게 Locale 처리를 할 수 있는지 알아보자

번들파일?? 이게뭐야

참고 : https://namu.wiki/w/%EB%B2%88%EB%93%A4
Bundle, 영어로 묶음이라는 뜻이며 보통 상품을 구매했을 때 끼워주는 걸 말한다. 스마트폰을 구입했을 때 나누어주는 이어폰이나 PC를 구입할 때 끼워주는 소프트웨어 등이다. 한가지 예로 대기업 PC를 구매할 경우 깔려나오는 Microsoft Windows와 아래아 한글은 번들이다.

MAP과 Properties 차이
MAP in 메모리 데이터
Properties 외부의 설정파일의 형태의 .properties 확장자로 PC가 꺼져도 남아있다.
그래서 외부설정 파일로 활용할때 이용, 저 확장자 파일은 properties 객체를 가지고 노는 것과 같다,
CLASSPATH RESOURCE 형태 src아래 들어감 - 이유 : 프로퍼티스 API에서 사용해야하니까

BASE 네임이 같은데 Locale이 틀림 _en, _ko
이거는 무시 되고 message만된다??

프로퍼티스의 모든 데이터는 유니코드로 작성되야한다.
분명히 영문, 한글 번들을 둘다 뒀는데
로케일을 지정안했기 때문에 기본 로케일(현재시스템 로케일)

Locale 어지간한 나라(지리적, 정치적, 언어적)의 정보를 담고 있다.

파라미터가 location.href="?lang="; 이렇게 오면 "", 즉 공백이 넘어온다 .
그래서 null이 아니고 ""이 아닌 경우를 따지는 것이다.

ko-KR, en-US
언어-국가 -> Locale Code

방금전에 선택한 Locale을 쿠키에 저장하고 일주일 뒤에도 꺼낼수 있다.
상태를 저장하는 개념(쿠키)

동기와 비동기 차이

참고 : https://private.tistory.com/24
synchronized
락이 걸려있나 안걸려 있나

자바스크립트의 XMLHttpRequest. 비동기 요청할때 쓰는 녀석
AJAX 객체의 형태로 두개 이상의 프로퍼티를 넘겨준것

Accept 헤더와 , Content-Type은 한쌍이어야한다.

오늘 수업 정리

핵심
1. 헤더
클라 시스템 , 언어, 데이터 타입
Request헤더의 클라이언트의 헤더를 식별하기 위한 재료가 된다.

  1. Enum 문법

과제

사칙연산기 만들어보기, 서버-사이드 방식으로 구현해보기
제일먼저 UI : 피연산자 두개, 연산자(종류 4개, 상수enum구조 적용)

  • model 2 구조 사용해보기 (jsp 만들기 입력 -> 서버 -> 요청처리(서블릿))
    이러면 모델 2 구조가 이해가 되겠지 그러면 내일은 거기다가 람다식을 적용해 볼 예정이다.
profile
끄적끄적 쓰는곳

0개의 댓글