서블릿과 JSP

뫄뫄(ahk)·2022년 9월 14일
0

Spring

목록 보기
5/18
post-thumbnail

서블릿이란 무엇일까?

서버 내에 있는 자바 기반의 웹 애플리케이션 프로그램으로 동적인 리소스를 만드는데 사용된다.

서블릿의 특징

몇 개만 정리하면,

  1. 서블릿을 url매핑 하기 위해서는 @WebServlet을 사용해야한다.

    @WebServlet = @Controller + @RequestMapping

  2. HTTPServlet을 상속해야한다

  3. 직접작성하려면 service(HttpServletRequest, HttpServletResponse)를 오버라이딩해야 한다.

  4. 그 외의 메서드로는 init(), destroy()가 있다.

  5. 서블릿 내에서 출력 스트림 사용시 IOException 예외 선언

++서블릿이 발전한 형태가 스프링(@controller). 스프링은 DispatcherServlet사용한다.

상속이 필요없고, 한 클래스 내에서 여러 메서드를 생성하여 또 다른 url매핑이 가능하다.

++Servlet 관련 에너테이션이 없을 때는 pom.xml파일에 설정 파일을 추가하거나, java build path의 classpath에 (servlet관련 애너테이션을 가지고 있는)Tomcal libaray를 추가한다.

서블릿의 init(), service(), destroy()

  1. init(): 서블릿 생성시, 초기화 될 때 자동 호출 됨. 초기화가 목적
  2. service() : 처리를 담당. 요청이 올 때마다 반복적으로 호출됨
  3. destroy() : 서블릿이 메모리에서 제거되거나(web app 종료시), 서블릿이 갱신되어 리로딩될 때 뒷 마무리 작업을 위해 자동 호출
  • 서블릿 인스턴스는 singleton패턴으로 객체가 재활용된다. 모든 사용자가 거의 비슷한 작업을 하기 때문. 하지만 요청마다 새로운 인스턴스를 생성하도록 할 수 있음.
  • 이 메서드들은 ServletContainer가 자동 호출

JSP란 무엇인가

JSP는 HTML안에 Java코드가 존재하는 문서로, 실행하면 servlet으로 자동 변환된다. 따라서 servlet과 거의 같은 의미로 볼 수 있다.

JSP의 특징

  • <%@ page%> : 페이지 설정 코드 (ex. import..)
  • <%! %> : 클래스 영역에 들어가는 코드(iv, cv)
  • <% %> : service() 안으로 들어가는 코드(안에 선언된 변수는 lv)
  • html코드 : out.println(); 안에 들어간다
  • 저장경로 : webapp아래에 저장해야한다.
  • jsp는 파일이름으로 자동 매핑된다.

jsp의 호출 과정

  1. 첫 번째 요청 시

    1. twoDice.jsp파일을 twoDice_jsp.java(servlet파일)로 변환
    2. twoDice_jsp.java(servlet파일)을 컴파일

    —> 시간이 비교적 오래 걸림

  2. 두 번째 요청부터 생성되어있는 인스턴스 사용

    —> 빠르게 호출 가능

  3. jsp파일 변경시

    다시 1번의 과정 반복(class 파일 생성 시간과 변경된 파일의 시간 비교)

서블릿과 spring의 비교

서블릿

  • lazy-init
  • 싱글톤 패턴 지원

스프링

  • early-init
  • 싱글톤 패턴 지원

Q. JSP의 기본객체

service()의 lv로 선언되어 jsp에서 객체 생성 없이 사용할 수 있다.
ex) request, response, session, application, out...

profile
NONONONONONOYes!

0개의 댓글