JSP 3. 템플릿 메서드 패턴 - 서블릿

zhyun·2020년 11월 20일
0

JspSpring

목록 보기
4/39

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 프로젝트 생성

템플릿 메서드 패턴이란?

  • 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 구조
profile
HI :)

0개의 댓글