📘웹서비스프로그래밍

서블릿

  • 자바 기반의 웹 프로그램 개발을 위해 만들어진 기술
  • 서블릿 클래스로부터 만들어진 객체
  • 자바로 작성된 프로그램을 실행할 수 있는 서버 소프트웨어(톰캣)를 통해 관리
  • 서블릿을 실행하기 위해서는 톰캣과 같은 서블릿 컨테이너가 필요
  • 일반적으로 WAS(Web Application Server)로 불림
  • 서블릿 클래스 -(인스턴스화)> 서블릿 객체 -(초기화)> 서블릿

    doGet 또는 doPost 메서드 안에 웹 브라우저로부터 요청이 왔을때 해야할일을 기술

서블릿 클래스의 구조

  • javax.servlet.Servlet 인터페이스를 구현한 추상 클래스인 GenericServlet 클래스와 HttpServlet 클래스 중 하나를 상속하여 구현
  • HTTP프로토콜에 최족화되어 있는 HttpServlet 클래스를 상속하는 것이 좋음
  • HttpServlet을 상속받아 doGet(),doPost()메서드를 오버 라이딩

HttpServletRequest (요청)

  • HTTP프로토콜의 request 정보를 서블릿에 전달하기 위한 목적으로 사용
  • 서블릿 컨테이너에서 생성되고 클라이언트 요청이 doGet(),doPost()로 전달될때 인자로 함께 전달됨
  • 서블릿에서 클라이언트와 연결해 처리할 작업은 HttpServletRequest를 통하여 정보 전달

HttpServletResponse (응답)

  • HttpServletRequset와 마찬가지로 클라이언트와 연결된 처리를 위해 사용
  • 클라이언트에서 서버로 전달하는 것과 관련된 것이 아니라 서버에서 클라이언트로 전달하려는 목적을 위한 기능으로 구성
  • 서블릿 컨테이너는 요청 클라이언트에 응답을 보내기 위해 HttpServletResponse객체를 생성하여 서블릿에 전달
  • 서블릿은 해당 객체를 이용하여 content type,응답코드,응답 메시지 등을 전송

서블릿의 생명주기

  1. 서블릿 초기화 : init()메서드
    • 클라이언트 요청이 들어오면 컨테이너는 해당 서블릿이 메모리에 있는지 확인
    • 메모리에 없을 경우에는 서블릿을 메모리에 적재해야 하는데,이때 서블릿의 init()메서드가 호출되며 초기화 작업 수행
    • init()메서드는 처음 한번만 실행되므로,해당 서블릿에서 공통적으로 사용하는 작업이 있다면 init()메서드를 오버라이딩하여 구현
    • 실행 중 서블릿이 변경되는 경우 기존 서블릿은 종료되고 다시 시작되면서 init()메서드가 다시 호출됨
  2. 요청/응답 : service()메서드
    • init()메서드는 최초에 한번만 수행되고 이후 요청은 스레드로 실행되며 service()메서드를 통해 doGet()이나 doPost()로 분기
    • 이때 파라미터로 HttServletRequest와 HttpServletResponse클래스 타입인 request와 response객체 제공
  3. 서블릿 종료 : destory()메서드
    • 컨테이너로부터 서블릿 종료 요청이 있을때 destory()메서드 호출
    • inint()메서드와 마찬가지로 한번만 실행되며, 서블릿이 종료 되면서 정리해야 할 작업이 있을때는 destory()메서드를 오버라이딩하여 구현

정보 공유

  1. URL rewriting
    • HTTP의 Query String을 이용하는 방식으로 URL에 파라미터를 추가해 서버로 요청하는 형식
  2. 쿠키
    • 클라이언트에 저장되는 작은 정보를 의미함
    • 서버의 요청에 의해 브라우저가 저장하게 되며 서버가 요청할 때 제공하는 방식 사용
  3. 세션
    • 클라이언트가 웹 애플리케이션 서버에 접속할 때 서버 쪽에 생성되는 공간으로 내부적으로는 세션 아이디를 통해 참조
    • 브라우저 : 서버에 접속할때 발급받은 세션 아이디 기억
    • 서버 : 해당 세션 아이디로 할당된 영역에 접근
    • 세션 유효 시간이나 브라우저 종료 전까지 유지되므로 서로 다른페이지에서도 정보 공유 가능
    • 사용자마다 생성되는 공간

태그:

카테고리:

업데이트: