2020-12-03
버퍼와 디스패치방식이 어떤 관계를 가지고 있는지
버퍼가 없으면 디스패치 방식X
resp 1개있으니 버퍼도 1개 그 1개를 A,B페이지가 공유, 버퍼가 자서 자동방출되면 디스패치가 안된다, 에러방출
에러 발생시? 에러발생시 버퍼를 지우고 거기에 에러 페이지 내용을 담는다
버퍼가 하나이기때문에 디스패치에서 문제가 생긴다는 것을 알아야한다. 이것은 스테이드가 를 유지하려고 하기때문에 문제가 발생한다.
문제가 발생하지 않으려면 요청, 응답 객체가 하나가 아닌 각자 존재해야한다.
이럴때 있어야하는게 리다이렉트가 되는것
리다이렉션에서 기존요청과 새로운 요청이 완전히 별개가되는것(스테이스리스때문) 서로 A,B가 다른것 Flow Control, 어플리케이션이 커지면 요청의 방향을 잡아줘야하는데 이 특성들을 알아야 지정해줄 수 있다.
기본 객체 9가지
자바 스크립트 기본 객체
- window
- 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)
세션 트래킹
요청이 왔을때 세션ID가 없다면 최초의 요청이 된다. 응답에 세션 ID를 같이 준다.
요청이 왔을때 세션ID가 존재하고 기존의 세션들과 대조했을때 같은 경우 최초의 요청이 아니다.
세션의 유지되는 구조(session tracking) - 세션 유지를 위한 session id 재전송 방법
- COOKIE
- URL
- SSL
URL 방식의 단점 : URL 재구성, 세션ID 노출
보완 ID를 암호화 >> https(secure socket기반으로 통신을 한다.)
쿠키의 우선순위가 높아서 일반적으론 쿠키를 쓴다. (url에 넘겨보니)
timeout : 마지막 세션 접근 시간과 현재 접근한 시간이 갭차이
세션과 관련 정책?에 관해 살펴 볼때 session 객체을 알아본다 . 그래서 세션 생성과 어떻게 돌아가는지 알아야하는 것이다.
ServletContext application
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
Author And Source
이 문제에 관하여(2020-12-03), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@hkjs96/2020-12-03저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)