11월 20일 금요일
진도 나가기전 복습..
classpath
- Virtual Machine의 컴파일러가 클래스를 찾기 시작하는 위치
- 컴파일을 하면서 새로운 클래스패스 지정
qualified name
서블릿 개발
- HttpServlet 상속
- 톰캣(WAS)가 가지고 있는 servlet-api.jar를 쓰기위해 클래스패스 설정
- WEB-INF 폴더
- 하나의 컨텍스트에서만 유효한 클래스패스(build-classes) 운영
- 컴파일 이후 서블릿 등록
- 톰캣(멍청함)이 서블릿컨테이너니까 인지하게 해줘야댐
컨테이너안에서 관리되는 컨퍼런트
- 톰캣은 서블릿의 라이프사이클 관리 (싱글톤으로)
- 1단계 서블릿 등록
: 톰캣이 가지고 있는 web.xml에 servlet-name, servlet-mapping
- 2단계 주소체계 통해 요청 발생시킴
: A라는 서블릿이 어떤 요청인지 제한을 해줘야함 URL매핑(서블릿 매핑)
- 3단계 객체생성 =>싱글톤
: 톰캣은 서블릿으로부터 최초의 요청이 들어오면 객체 생성 (싱글톤)
- 4단계 IO작업
: web.xml로 IO작업이 있어야한다 (1번만 로딩)
: 서블릿 코드가 수정될때마다 리로딩
서블릿 단점
- 코드 수정시 재컴파일
- 해줘야 할일이 많고 복잡
- 하나의 자바소스 안에 여러언어가 섞여 있어서 가독성 떨어짐..(html..)
서블릿 단점을 해결 => JSP 사용
- jsp는 컴파일도 안하고 따로 매핑도 안함 (대부분 정적인 코드) 동적인코드는 <%%>안에 넣음
- jsp는 디자이너에게 개발이 더 편하다
- jsp와 서블릿은 다른 스펙이 아니다
- 톰캣을 부를수 있는 용어
- 톰캣 = 와스 = 서블릿컨테이너 = jsp컨테이너 = 미들티어
dummy01 프로젝트 생성
템플릿 메서드 패턴이란?
- Dynamic web module_version
- buildpath = (class path) 클래스패스 = src
- 개발을 할때 사용하는 클래스패스
- 이클립스에서는 classes 폴더가 안보임
- src내에 만든 자바소스를 저장하면 컴파일 된다
- 컴파일된 소스는 classes에 저장 'buildpath'
- Default output folder : build\classes
- 이클립스에서 저장하는 순간 자동 컴파일 => 클래스 파일이 만들어져서 bulid\classes에 잠시 저장되고 bulid\classes가 클래스 패스가 된다
- 개발이후 테스트(배포)시 서버를 통해 실행하려면 클래스파일들이 독베이스인
'webapp'으로 이동된다
- build\classes안에 있는것들을 web-inf 아래 있는 classes아래로 고대로 복사 (테스트시..)
=> 이유 : 톰캣이 클래스를 지정할때 WEB-INF/classes가 필요해서
- 소스폴더 src | res 구분
- 컴파일하면 소스폴더 2개 다 classes 밑으로 가지만, 개발시 관리 편하게 하려고
- 실행 시 구분은 없음..
- res 아래 web.xml,properties 등을 관리 이유
- 클래스패스리소스로 만들기위해서
- 클래스패스리소스 파일을 찾으려면 클래스패스에서부터 그 이후경로(qualified name)를 기술하면 된다
- 리소스 구분
- 파일시스템 리소스 : 모든 리소스는 파일시스템 리소스
- 클래스패스 리소스 : 클래스패스 + qualified name
- 웹리소스 : url로 접근
- web.xml 자동 생성 체크
dummy01 프로젝트 분석
- build는 이클립스 영역 (임시저장) 개발자 영역 아님
- Navigatior이용 => bulid 폴더 내부 확인 가능
주소를 통해서 접근가능 여부에 따라서 Java Resuorces | WebContent로 나뉜다
1. Java Resources
- 웹상 주소로 접근할 수 없다
- classpath 아래에 배포되는 리소스
- classes 폴더 안에 있는 채로 배포되기때문..
- java,xml,properties
- res(kr.or.ddit) == src(kr.or.ddit)
2. WebContent
- 웹상 주소로 접근할 수 있다
- webcontent 아래에 있는것들은 클라이언트가 url을 통해 접근 가능한 파일들
- 톰캣의 서버폴더에는 미존재.. 임시파일..
- WEB-INF 아래있는것들은 컨텐스트루트 밑으로 감
- 웹리소스, 임시폴더, 나중에 배포할때 사라짐
sample.xml찾기 (Java Resource)
- kr/or/ddit/sample.xml
- 클래스패스 이후의 qualified name(클래스패스리소스)
- 클래스패스 이후를 찾을때 class loader 라는 녀석이 찾아줌
web.xml 찾기 (Webcontent)
- 웹리소스 =: url을 통해서 접근
- /WEB-INF/web.xml
- 컨텍스트루트(Context Root)를 시작해서 접근
- url접근인데 http(프로토콜),ip(localhost),dummy01(Context root) 없는 이유?
- 서버에서 접근 =: 서버사이드 방식
- 서버사이드에서 자원에 접근하는 것이어서 url이 다름
- 클라이언트가 접근 =: 클라이언트사이드 방식
MIME
- MimeDescriptionServlet.java
톰캣 web.xml
- 폴더 Servers 아래에 있는 web.xml
- 와스가(원래동적처리하는데) 위의 소스가 없으면 정적요청 처리 못함
- 위의 부분이 없으면 톰캣은 jsp컨테이너가 될 수 없다
- 위의 부분을 통해 JSP파일을 컴파일 할 수 있음
- 603line => mime타입 매핑되어있는 부분
- 마임타입 데이터베이스
- hwp 커스텀파일은 따로 매핑해줘야한다..
과제
- 디자인패턴
- ibatis
- queryForList, queryForObject등 메서드가 템플릿메서드인 것 찾아보기
- 정규식 pattern.api
- 중프 servlet,jsp 구조