2020-11-24

jsbak·2020년 11월 24일
0


"/imageView.do"
이녀석은 URL보다는 URI에 가까운 개념
그러려면 URI와 URL을 잘 구분해야한다.
가상의 리소스를 식별하기 위한 가상의 주소 가상의 주소를 정확하게 식별하기 위해서는 URI가 필요하게됨

콜백
1. 라이프사이클 (싱글턴, 인스턴스 하나, 전체를 통틀어서 한번만 실행)
2. 리퀘스트 콜백 ( service, do계열 메서드)

템플릿 메서드
작업 순서는 정의되어 있고
기능은 실제 콘크리트 에서 정의되는 것으로 된다.

action / href / src
브라우저가 해석해야는 속성 근데 생략이 되어있다? 그럼 지가 가진거로 채울라함. 브라우저 상단의 주소밖에 없으니 그거를 그대로 쓴다.
"/01/gugudan/tmpl"이 된다.

최종결과는 html로 나가야한다.

그래서 과제의 기존템플릿이 변경되야한다고 이야기 하신것..

alt shift c 시그니처 창 열림 , 어디서 변경되는지도 보여줌
메소드 시그니처 : 메소드의 선언부

클라이언트의 요청은 다 String 문자열이다. 그래서 서버사이드에서는 적잘한 캐스팅이 필요하다

리스트, 셋 요소 엘리먼트
맵 요소 엔트리 (키, 벨류))

템플릿 엔진에서 기억해야하는 것
/**

  • 서블릿의 콜백메서드 종류
  • lifecycle callback(singleton) : init, destroy _ 한번만 호출
  • request callback : service, doXXX _ 매번 요청때마다 반복요청이 된다.
  • 1) service : request method 판단 -> do[methodName] 콜백을 호출하여 요청을 위임.
  • 2) doXXX : request method 따라 처리될 구체적인 작업을 정의. _ 템플릿 메서드 패턴이지만 커스텀이 가능??
  • 우리가 어떤것도 직접 호출하는게 없어서 콜백이라함.
    */ Map<String, String[]> parameterMap = request.getParameterMap();
    dataMap.putAll(parameterMap);
    for(Entry<String, String[]> entry : parameterMap.entrySet()) {
    String paramName = entry.getKey();
    String[] paramValues = entry.getValue();
    // 1이면 하나만, 아니면 그냥 쓰는데 이러면 해시코드가 적용될거라는데?
    dataMap.put(paramName, paramValues.length==1?paramValues[0]:paramValues);
    }
    배열인 이유 하나의 이름으로 여러개의 파라미터가 전달될 수 있기 때문에

진짜 소스는 구구단 템플릿에 있다.

JSP 스펙??

서블릿이 필요한 이유 클라이언트의 요청을 받기 위해서
금고 WEB_INF안에 JSP가 존재, 클라는 직접 못가니 클라요청을 금고밖에서 직접받을 녀석이 필요하다 그것은 서블릿이나 JSP나 상관없지만 요청을 받을 수 있어야함. 응답데이터는 html로 나가야한다. 금고안 jsp는 html를 가지고 있음
금고안은 response을 처리하는 것이
금고안이나 밖이나 서블이나 jsp나 상관없으나
금고밖은 request만 (응답에 대해서는 생각 안해도된다) (서버사이드 : 자바) 굳이 JSP스펙으로 안써도되는것(그래서 서블릿을 사용하게되는 것, 다 쓸 수는 있으나)
금고안 (클라이언트 사이드 : 자바스크립트, html) 데이터를 넣기 위해서 순수하게 클라이언트 사이드 언어만 쓸수 없음 그래서 JSP가 필요

모델2 (MVC기반 모델 2 )
요청은 서블릿, 응답은 JSP

금고밖에서 요청을 받아서 분석 데이터를 만들어냄
금고안으로 보냄
금고안에서 응답데이터를 만들어내는 과정에서 아까 만든 데이터를 사용할 수 있어야한다.'

모델 2도 MVC 기반


그래서 mime을 확인 할 수 있었다. 읽어보는게 좋다.

ctrl shift r 내가가진 resorce중에서 찾음
ctrl shift l 하면 단축키 다나옴

톰켓이 ?하기 전까지는 외부에서는 전역변수로 접근 불가능?
웹이서는 데이터 공유를 어떻게 하나 (dataMap)req스코프(SCOPE) ?? 스코프 자체도 컬렉션이다? (이름, 값) 스코프의 타입은 MAP이었다.

서블릿에서 사용하는 request와 JSP에서 사용하느 request가 동일해야한다는 가정...
그대로 이동하는 방식 forward(서버안에서 이동, 그래서 앞에 contextPath이후 경로만 기술되면 된다)

EL도 똑같은 방식?? 배열에 대해서toString()부름?

JSP 여러가지 토큰을 이용해 제어문을 다양하게(쉽게?) 이용
JSP 여라가지 토큰을 동시 사용

상대 경로의 불안정성, 뭐가 위험하다? 현재 경로가 사용되는 위치에 따라 최종적인 절대 경로 위치가 달라진다.

모델1
요청, 응답이 하나로 처리되는 방식 MVC 패턴이 완성이 안됨 C와 V가 하나로 합쳐짐 M필요 없음(dataMap 필요 없음, 그동안 썻던 스코프가 필요 없다.."${param.minDan }" 이런거 필요 없다 )

오늘 수업의 핵심은 모델 1과 모델 2의 차이를 아는 것
모델 1 스코프(dataMap) 쓸 필요 없다
모델 2 스코프(dataMap) 필요(핵심)
질문 받으면 대답할 수 있어야함

? 하신다는데 물어보자
HttpServletRequest 이거 알아보는건가?
ctrl shift t (openType)

1. HTTP 프로토콜
2. 서블릿을 대상

JSP 자체가 request가 존재하니 서블릿이다.

input 태그의 목적 : 데이터를 입력, 데이터 전송
input의 hidden 은 클라에게는 안보이지만 서버로 전송하기 위해서 사용하는 type이다

서버 - 서번트 - 자원을 준다.
클라 - 자원을 달라 요구
그래서 모든 요청이 기본적으로 GET 방식

이제 이 헤더에 뭐가 있는지, 어떻게 가지고 놀건지
데이터의 의미, 가지고 노는 방법을 알아야한다.

그래서 실제로 요청에는 헤더를 관리하기 위한 맵이 존재한다.
그러면 맵만 잘 관리하면 다 알수 있다.
Accept?? mime가 딱, 그거는 반드시 그 해당 mime로 와야한다. 근데 여러개가 있다. 그러면 나열된 순서대로 우선순위가 있는것 마지막은 안되면 그냥 (/)아무거나 달라는 것도 있다 ㅋㅋㅋㅋ
ajax에서 dataType은 Accept의 타입을 결정하는 것이었다. 그리고 고정하지 않을 수도 있다는 것이다.
즉, Accept만 잘 해석해 두면 한가지 형태의 데이터도 여러 형태의 데이터로 내보낼 수도 있다.
Accept 계열은 뭔가 받아야한다.
Accept-Language Locale 언어, 언어-국가 ko-KR, en-US 어떤 로케일 문자를 가지고 있냐에 따라서 응답데이터를 해당언어로 ... 그러면 다국적으로 보내야한다면 이부분을 잘 가지고 놀아야한다.

Cookie 상태정보(데이터) 일주일동안 저장, 저장할 위치(WEB : 클라,서버 두개tier가 존재, 두개의 컴퓨터, 저장할 메모리 2개 이때 클라이언트 측에 저장하는것 Cookie, 서버쪽 Session)
쿠키는 그냥 헤더였던것 그리고 JSESSIONID를 이용하는 것임
세션 내부의 식별자 세션 ID 이것이 쿠키로 존재하던것 나중에 설명해 주신다고.
~
나중으로 건너뛰고
~
User-Agent : 현재 클라이언트 시스템에 대한 정보, 네이버에서 접속할때 PC과 폰은 다르게 보여주는데 다른 응답데이터를 보내야하는데 네이버 입장에서는 이 요청자가 어떤 시스템에서 접속했는지 알아야한다. 이럴때 사용하는 것
클라이언트에게 가장 적합한 데이터를 내보내기 위해서 우리가 알아야하는 것임

컬렉션 뷰? -- 이뉴멀레이션, 이터레이터
컬렉션에 대한 접근 방법만을 정의하고 있다고 해서 컬렉션 뷰임

우리 코드가 서버사이드 코드인지 클라이언트 사이드 코드인지 파악하기
서버는 특정한 포트하나를 오픈하지만 클라이언트는 아님.


오늘의 과제

  1. 모델1과 모델2의 차이점, 구조 중프때의 구조를 확인, 스코프가 어떤식으로 활용되고 있었는지 확인하기
  2. request가 뭔지 대해서 doc문서를 살펴봐라
profile
끄적끄적 쓰는곳

0개의 댓글