본문 바로가기

Web

[공부] Servlet

Servlet프로그래밍

  • 서블릿의 특징
    • 여러가지 애플리케이션 기반의 응요프로그램을 개발
    • 주로 HTTP 프로토콜 사용,
    • 독립된 스레드 기반으로 서비스, 다중 스레드 서비스가 기본적으로 제공
  • HTTP
    • 특징
      • Stateless(비연결상태) : 접속유지를 최소화, 클라이언트 이전의 상태를 알 수 없다.
      • Keep Alive : 요청을 계속해서 보낼 수 있게 된다.
  • Servlet 동작과정
    • 웹 클라이언트는 웹서버에게 요청을 보냅니다.
    • 요청을 해석하여, 서블릿에 대한 요청일 경우 서브릿 컨테이너에게 네트워크를 통해서 요청을 전달,
    • 서블릿은 서블릿 컨테이너에 의해 인스턴스가 생성되어 필요에 따라 init()메소드가 호출되어 초기화, 서비스를 수행하기 위한 service()메소드가 호출
    • 웹 서버는 서블릿 컨테이너로부터 전달받은 결과를 페이지를 웹 클라이언트에게 HTTP응답으로 되돌려 줌.
  • Servlet과 JSP 변천과정
    • Servlet 등장, 프레젠테이션로직와 비즈니스 로직이 분리가 안됨. 개발 및 관리가 어려움
    • 위의 단점을 보완하기 위해서 JSP가 등장, JAVA, HTML .및 JavaScript코드가 혼재되니 프로그램 관리가 더 복잡해
    • 모델-2 아키텍처, 모델- JAVA클래스, 뷰- JSP,, 컨트롤러- Servlet
    • 프레임워크 등장, Spring, mybatis
  • Servlet Life Cycle
    • init() : servlet객체가 생성될 때 호출
    • service() : servlet이 요청되었을 때 호출 , 객체는 한번만 생성되고, service는 여러번 가능하다
    • destroy() : servlet객체가 파괴될 때 호출, (메모리에서 제거 됐을 때)
  • Method 방식
    • GET
      • 데이터를 읽기전용으로 조회하고자 사용
      • 쿼리 스트링 형태로 전달
    • POST
      • 요청 body에 입력 스트링을 통해서 정보를 전달하는 방식
      • 전달되는 데이터의 양에 제한이 없다.
      • 같은 데이터 양이면 전송 패킷 body에 데이터를 구성해야 하므로 get 방식보다 속도가 느리다.
  • ServletConfig
    • Servlet마다 ServletConfig객체가 별도로 대응되어 생성됨.
  • ServletContext
    • 서블릿이나 JSP간에 자원을 공유해서 사용하기 위한 객체
  • 서블릿 페이지 이동
    • Forward
      • 동일 서버 내부의 서블릿 간 페이지 이동
      • 동일한 서버내에서 이동하기에 최초의 request객체가 그대로 유지되어 forward
      • 브라우저 상의 URL은 변화가 없다
    • Redirect
      • 타 서버까지 자유롭게 이동할 수 있음.
      • 새로운 URL을 브라우저의 클라이언트에게 전달하여 새로운 request 생성
      • 2번의 request,response가 일어남
      • request 객체가 소실되어 저장 불가 (session, cookie객체에 저장)
    • include
      • 현재 페이지에 다른 페이지를 포함하는 것
      • 최종 response에 포함됨.
  • ServletContextListener
    • 서블릿 컨텍스트의 상태나 HTTP 세션 객체의 상태변화에 응담하는 클래스
  • SevletFilter
    • 사용자 인증이나 로깅과 같은 기능들을 모든 서블릿이나 JSP가 필요로 하는 기능들
    • 전처리, 후처리
  • 어노테이션
    • compiler 또는 JVM을 위한 주석
    • 실행에 필요한 것은 아니지만 컴파일러에게 해당 클래스에 대한 정보를 알려주거나 자바 크로그램 실행에 관한 내용을 설정하는 용도로 사용
    • 종류
      • @WebServlet
      • @WebListener
      • @Webfilter

'Web' 카테고리의 다른 글

[공부] MVC Pattern  (0) 2020.05.04
[공부] JSP  (0) 2020.05.04
[공부] Web Application  (0) 2020.05.04