이거가 뭐였지
<오늘 배울 내용>
클라이언트 A, B사이에서 공유할 수 있는 스코프에 대해 볼것
그전에 기본객체를 이해해야 함
자바스크립트 기본객체 : window, document
객체 선언하거나 생성한 적 없는데 쓸 수 있었음
서버 사이드에서 동작하는 것은 50:50 - 요청을 분석, 응답을 잘 생성
정적 텍스트는 나중에 지역코드화된다.
jsp에서 html-정적텍스트
에러가 발생하면 저 페이지로 처리하겠다
그럼 그 페이지는 이 페이지는 에러 처리하는 페이지다라고 나타냄
서블릿 동작 과정
처음 요청 후 새로고침 - 톰캣은 싱글톤객체 안만들고 쓰레드 분리하고 service()실행
rt.jar뒤짐->없으면 톰캣의 lib->web-inf밑에 클래스패스->work의 클래스패스
pagecontext제일 먼저 만들어지고 나머지 객체 만들수잇는 겟터가지고 있음
나머지 기본객체들 pageContext객체로 만들고 있음.
EL - 나머지 객체는 없는데 pageContext는 똑같음.
EL은 기본객체가 없는데 유일하게 있는게 pagecontext
->pageContext써서 겟터 잘쓰면 만들수있다는것
DB에 접속할때
1. 드라이버 로딩
2. 연결 객체 생성
3. 쿼리 객체 생성
4. 결과 받아옴
5. 연결 끊기 close
데이터베이스도 서버. 접속할 수 있는 클라이언트가 제한됨. 쓸 수 있는 한계가 있음. -> 사용 끝난 접속은 끊어줘야 됨. 이게 세션. 통로 개념
ibatis가 이 과정들 해주고 있어서 우리가 할필요 없었던것. 하지만 사용방법은 중요하지x 얘가 뭘 해주느냐. 동작 구조에 집중하기. 다른 프레임워크 써도 마찬가지
웹 어플리케이션에서 세션은?
클라이언트와 어플리케이션은 네트워크를 사이에 두고 떨어져있음-확실한 건모르고 추측해야됨
-> timeout 사용
네이버 하다가 끄고 잠드는 사람도 있는데 그냥 냅두고 잠드는 사람도 있음 - 이걸 판단해야됨 => timeout 30분이 지나면 만료됬다고 생각.
세션 쓰는 이유 - 클라이언트와 서버가 반대편에 있기 때문에
DB는 driverconnection종료 이게 있는데 네이버 종료 이런건 없음
-> 기간으로 사용
암호화
하지만 암호화해도 브라우저와 톰캣사이에 암호키를 설정하는 과정에서도 보안문제 발생
-> 100% 안전한 방법은 없다.
그래서 쿠키 사용함.
sessionDesc.jsp에서 어플리케이션은 webStudy01
톰캣이 운영하고 잇는 어플리케이션은 2개 - ServletContext객체도 2개. ServletContext : 톰캣과 소통하기 위한 객체
하나의 어플리케이션에서 ServletContext객체는 싱글톤으로 운영이 된다.
사용 범위가 다름 - context는 application전체. 그것을 꺼내는게 ServeltContext로 꺼냄
주소만 알고잇음 - url리소스 컨텍스트패스 아래에 있다
이미지서블릿 - web-inf 밑에 classes밑에 있음 - 클래스패스
request, session 공통점 : 내부에 스코프라고 불리는 맵을 가지고 있다.
include
pageContext는 b로 가기전에 먼저 한번 방출함. 예외처리 안될수있음.
request는 buffer에..
include, forward쓸때 반드시 buffer에 대한 생각 하고 있어야됨
스코프 갖고 있는 애들 4개 - 기본객체 안에 저장영역 갖고 있다 그 저장영역은 맵
pageContext는 jsp페이지마다 1개 갖고 있다. - 스코프 영역 그 페이지 안 -> 공유 안됨.
request 스코프는 한페이지가 아님.
-> request가 넓음.
리다이렉트라면? request보다 오래 살아남을 수 있는 애 필요 - 세션 - 한 클라이언트.
쿠키의 트래킹. 크롬의 쿠키 저장소, 파이어폭스 저장소는 다름. 사람은 한명이어도 브라우저가 다르면 새로운 세션 만들어지는 것.
세션 - 한 클라이언트 하나의 브라우저
카페 접속자 명단 - 나나 또다른 카페회원이 공유되는 데이터여야 됨.
공유데이터 - 최소한의 저장소를 선택해야 됨. 세션에 하면 여러개가 된다..?
-> 어플리케이션 - servletContext
분리의 기준 - 공유의 범위(언제 이 데이터가 사라질거냐)