Servlet-3

mandarinduk·2021년 3월 17일
0

Servlet 동작 순서

  1. 웹 브라우저
  2. 웹 서버
  3. 웹 어플리케이션 서버
  4. 서블릿 컨테이너(스레드 생성 -> servlet 객체 생성)

Servlet 기술: CGI를 대신할 수 있는 Java 기술

  • CGI의 차이점

    1)
    기존 CGI
    - 로딩과 초기화 작업을 진행하기 때문에 서버에 대한 오버헤드가 크다.
    서블릿
    - 한번 메모리에 로딩되어 수행되면 작업이 모두 수행되어 끝나더라도 메모리에서 해제되지 않는다(재활용).
    - 계속적인 수행 요청이 들어와도 메모리 로딩이나 초기화 처리하지 않는다.
    - 모든 서블릿은 한번만 메모리에 로딩 되어진다.

    2) 특정 웹 서버에 비의존적이다.
    - Java 언어로 구현되는 프로그램이기 때문에 플랫폼(운영체제)과는 무관한 실행 파일을 만들 수 있다.
    - 기존의 CGI는 성능향상을 위해 추가적인 API가 필요했던 것에 비해서, Servlet API를 활용해서 개발하면 된다. Servlet 엔진만 활용해도 된다.

    3) 서블릿은 멀티 스레드로 동작한다.
    - Servlet은 CGI처럼 웹 브라우저로부터의 요청에 대해 각각의 프로세스를 생성하지 않는다.
    - 각 요청에 대해서 스레드로 동작

Servlet의 생명주기(Life Cycle)

1. Servlet 객체 생성 - 최초 한 번
2. init() 호출 - 최초 한 번
3. service(), doGet(), doPost() 호출 - 요청될 때마다
4. destroy() 호출 - 마지막 한 번

Servlet 선처리, 후처리

객체 생성 -> init() -> service() -> destroy()

선처리: init() 전 - 의존하는 객체를 설정한 이후에 초기화 작업을 수행할 메서드에 적용
후처리: destroy() 후 - 컨테이너에서 객체를 제거하기 전에 호출된 메서드에 적용

@PostConstruct: 선처리를 위한 어노테이션
@PreDestroy: 후처리를 위한 어노테이션

한글 처리

톰캣 서버의 default 문자 처리 방식은 ISO-8859-1 방식이다.
따라서 별도의 한글 인코딩을 하지 않으면 한글이 깨질 수 있다.
get과 post의 한글처리가 다르다.

  • get - Servers/Tomcat 폴더 내에 있는 server.xml에서 에 URIEncoding="EUC-KR" 속성 추가
  • post - doPost 메서드 내에서 설정한다. request.setCharacterEncoding("EUC-KR")
profile
front-end 신입 개발자

0개의 댓글