2020-12-03

jsbak·2020년 12월 3일
0

버퍼와 디스패치방식이 어떤 관계를 가지고 있는지
버퍼가 없으면 디스패치 방식X
resp 1개있으니 버퍼도 1개 그 1개를 A,B페이지가 공유, 버퍼가 자서 자동방출되면 디스패치가 안된다, 에러방출

에러 발생시? 에러발생시 버퍼를 지우고 거기에 에러 페이지 내용을 담는다

버퍼가 하나이기때문에 디스패치에서 문제가 생긴다는 것을 알아야한다. 이것은 스테이드가 를 유지하려고 하기때문에 문제가 발생한다.
문제가 발생하지 않으려면 요청, 응답 객체가 하나가 아닌 각자 존재해야한다.
이럴때 있어야하는게 리다이렉트가 되는것
리다이렉션에서 기존요청과 새로운 요청이 완전히 별개가되는것(스테이스리스때문) 서로 A,B가 다른것 Flow Control, 어플리케이션이 커지면 요청의 방향을 잡아줘야하는데 이 특성들을 알아야 지정해줄 수 있다.

기본 객체 9가지

자바 스크립트 기본 객체

  1. window
  2. document

기본객체

  • 개발자가 만들거나 생성한 적이 없는데도 사용할수 있는 녀석들
    스크릿틀릿 안 객체 -> 지역변수화 된다,(언더바_jsp.java?? _jspService)

그 기본 객체의 종류가 9가지이다.

실행시 하나의 어플리케이션을 돌리기위해서도 클래스패스가 하나가 아니다 그리고 그것들을 뒤져서 내가 필요한 클래스들을 찾는것

  public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)
      throws java.io.IOException, javax.servlet.ServletException {

    final javax.servlet.jsp.PageContext pageContext;
    javax.servlet.http.HttpSession session = null;
    java.lang.Throwable exception = org.apache.jasper.runtime.JspRuntimeLibrary.getThrowable(request);
    if (exception != null) {
      response.setStatus(javax.servlet.http.HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
    }
    final javax.servlet.ServletContext application;
    final javax.servlet.ServletConfig config;
    javax.servlet.jsp.JspWriter out = null;
    final java.lang.Object page = this;
    javax.servlet.jsp.JspWriter _jspx_out = null;
    javax.servlet.jsp.PageContext _jspx_page_context = null;

page_context는 제일 먼저를 가지고 있고 나머지 기본 객체를 가져올수 있는 getter가 있다
구조를 보면 모든걸 다 가지고 있기 때문에 다른건 다 없어도 이녀석 하나만 있어도 된다.

req 객체 어떻게 해요? 하면 페이지컨텍스트 객체에서 getter로 가져와요 하면된다

DB ?

드라이버 -> 연결 -> 구문객체?
DB도 서버니까 close한것 연결통로하나가 (session이 되는것이었다)

세션?

세션맨 한공연만 하는 사람
한 공연 = 한 세션
어플리케이션을 사용하는 기간 -> 세션
DB 아이콘을 눌러서 사용하고 종료하는 주기 -> 세션(설치형 어플리케이션)
웹 어플리케이션? 세션정의 명확한 것이 없다.
직접조작이 불가능, 추측, 그래서 세션에서 사용하는 개념이 타임 아웃 그걸 세션에서는 '최초의 리퀘스트가 들어왔을때' 라고 본다.
한번의 요청과 다음 요청 사이의 시간 갭 - 타임 아웃(사용해야하는 이유 클라이언트와 서버가 반대편에 있기 때문에, 세션은 통로)

기본적으로 http는 비연결지향이기 때문에 하나의 연결통로를 세션으로 잡기 보단 타임아웃(기간)으로 세션을 잡았다.
기간 - 한 클라이언트가 하나의 브라우저를 이용해서 ~ (이라는 모든 말이 생략)

세션의 유지되는 구조(session tracking)

세션 트래킹

참고 : https://technet.tmaxsoft.com/upload/download/online/jeus/pver-20140827-000001/session/chapter_session_tracking.html

요청이 왔을때 세션ID가 없다면 최초의 요청이 된다. 응답에 세션 ID를 같이 준다.
요청이 왔을때 세션ID가 존재하고 기존의 세션들과 대조했을때 같은 경우 최초의 요청이 아니다.

세션의 유지되는 구조(session tracking) - 세션 유지를 위한 session id 재전송 방법

  • COOKIE
  • URL
  • SSL

URL 방식의 단점 : URL 재구성, 세션ID 노출
보완 ID를 암호화 >> https(secure socket기반으로 통신을 한다.)

쿠키의 우선순위가 높아서 일반적으론 쿠키를 쓴다. (url에 넘겨보니)

timeout : 마지막 세션 접근 시간과 현재 접근한 시간이 갭차이
세션과 관련 정책?에 관해 살펴 볼때 session 객체을 알아본다 . 그래서 세션 생성과 어떻게 돌아가는지 알아야하는 것이다.

ServletContext application

CAC 참고 : https://m.blog.naver.com/PostView.nhn?blogId=gojump0713&logNo=140035680615&proxyReferer=https:%2F%2Fwww.google.com%2F

CAC(Context Aware Computing) - 휴대폰이 놓여있는 시간, 위치등등의 모든 환경

어플리케이션 폴더? context 운영하려면 그걸 DOCBASE 서버가 있어야한다.
하나의 어플리케이션 과 그걸 운영할 서버(컨텍스트, 톰켓?)
하나의 어플리케이션에서는 무조건 singleton의 application 객체 하나이다.

하나의 컨텍스트, 하나의 어플리케이션과 커뮤니케이션을 목적으로할 객체?

서블릿 스펙 버전? (컨테이너)WAS가 지원하는 서블릿 버전으로 확인

저장 영역의 타입이 MAP

  • 페이지 : pageContext는 jsp하나당 하나
    스코프가 공유로 사용 불가능
  • 응답 : 디스패치에서는 req scope 공유가능
    리다이렉트는 req 사라지니 공유 불가
  • 세션 : 그래서 리다이렉트 session scope를 이용, 범위 -> 1클라이언트1브라우저
  • 어플리케이션 : 똑같은 데이터 모두가 봐야한다면 (모든유저가 동일하게 이용) 딱1개만 만들어지는 객체에 저장(서블릿컨텍스트), 그래서 어플리케이션 scope에 저장

다르게 말하면 언제 이 데이터가 사라지게 할것이냐
공유범위를 최소화하는데 그게 물리적인 것으로 보면 안된다.

보강전까지 해야할 일

commons - io - 받고 설정
그래서 maven 사용 준비를 하자

apache.org - maven - download

profile
끄적끄적 쓰는곳

0개의 댓글