Java Spring

[Java Spring] JSP, 서블릿 기초

begong 2023. 1. 27. 20:59
반응형

JSP, 서블릿

  • JSP와 서블릿은 거의 비슷
  • Spring은 서블릿을 발전시킨 것.
  • Spring이 서블릿을 사용하기도 함 ex) Dispather servlet
  • 서블릿에서 @WebServlet 에너테이션 = 컨트롤러의 @Controller + @RequestMApping 에너테이션
  • 서블릿은 경로마다 클래스를 하나씩만듬, 컨트롤러는 경로마다 메서드를 활용하여 동작

서블릿

  • singleton : 한개의 인스턴스만을 만들어 호출 시 재활용
  • 서블릿 안의 메서드들은 서블릿컨테이너에서 사용
    • init() : 서블릿의 초기화 시 실행
    • service() : 입력, 처리, 출력 등 동작을 담음.
    • destroy() : 서블릿이 메모리에서 제거될때 컨테이너에 의해 자동 호출

JSP(Java Server Pages)

  • JSP는 서블릿으로 변환되서 전달 됨
  • <%! ~ %> : 클래스 영역. 서블릿 클래스 범위로 들어감
  • <% ~ %> : 메서드 영역. 서블릿 service() 메서드 내부로 들어감
  • .jsp요청이 들어오면 서블릿 인스턴스가 존재하는지 확인한 뒤 없다면 서블릿으로 변환, 컴파일 있다면 서블릿인스턴스 응답.
  • 첫번째 호출 시 변환과 컴파일 과정이 있어서 시간이 걸림.(jsp 내용 변경 시에도)
  • 두번째 호출 후에서는 로딩시간 빠름
  • 서블릿 : Lazy- init 요청이 있을 시 초기화 (Spring : early -init 요청이 오지않았더라도 미리 초기화)
  • 기본객체
    • 생성 없이 사용할 수 있는 객체
    • service()의 지역변수로 선언되어있는 것들
    • request, response, session, pageContext, config 등

유효 범위(scope) 와 속성(attribute)

  • 4개의 저장소가 있음
  • Map 형태로 저장
  • 저장소마다 접근범위, 생존시간이 다름
  • pageContext
    • 로컬변수 저장
    • EL ${} 때문에 사용
    • 해당 페이지 안에서만 접근 가능
    • 요청할때마다 새로 초기화
  • application
    • webApplication 전체에서 접근가능
    • 전체 1개
    • 모든 클라이언트가 공유
  • session
    • 개별 저장소
    • 클라이언트마다 1개
    • 로그인시 개별저장소 생성, 로그아웃시 제거
    • 장바구니, 로그인정보 등
    • 사용자마다 1개씩이기 때문에 용량부담 =>최소한의 data만 저장
    • 메모리 부담이 큼
  • request
    • request객체가 가지고있는 저장소
    • 요청이 처리되는 동안 존재
    • 요청마다 1개
    • foward시에 활용됨
  • 관련 메서드
    • void etAttribute(String name, Object value) : 쓰기
    • Object getAttribute(String name) : 읽기
    • void removeAttribute(String name) : 삭제
    • Enumeration getAttributeNames() : 저장된 모든 속성의 이름을 반환

URL 패턴

  • WebServlet으로 서블릿을 URL에 매핑할때 사용
  • 우선 순위 순
    1. Exact mapping : 정확한 주소 일치
    2. path mapping : 경로 일치
    3. extension mapping : 확장자 일치
    4. default mapping : 모든 주소
  • 우선순위로 검색
  • 스프링은 dispatcherServlet이 모든 요청을 처리해줌

EL(Expression Language)

  • <%=값%>
  • ${값}
  • EL은 값이없더라고 null 출력 안함
  • 경로를 생략하면 pagecontext->request->session->application 순으로 탐색
  • 문자 + 숫자 => 숫자로 계산함 1+"1"=2
  • null 은 0으로 바뀜

JSTL (JSP Standard Tag Library)

  • JSP파일에서 if for등을 편하게 쓰기위해 만들어놓은 라이브러리
  • <c:if>, <c:forEach> 등 태그가 있음.

Filter

  • 공통적인 요청 전처리와 응답 후처리에 사용. 로깅, 인코딩 등
  • 필터에서 공통적인 부분을 전처리한 후 Servlet이로 이동해서 처리후 다시 필터로이동하여 후처리
  • 필터가 여러개일 수 있음
반응형