2013년 10월 28일 월요일

서블릿

서블릿 (Servlet)


1. 서블릿이란 ?

 자바를 이용해서 웹상에 실행되는 프로그램을 작성하는 기술
 서블릿은 컴파일 과정이 플요하고 특정 클래스를 상속 받아야만 구현이 가능한 구조.
 JSP  : 텍스트 파일 구조
 서블릿 : 자바 클래스 구조이다

2. JSP란

서블릿이 가진 HTML 표현상의 문제를 해결하기 위함이다.
서블릿은 프로그램 내에서 HTML 을 처리하기 때문에 간단한 태그를 변경할
때조차 재 컴파일 해야하는 문제가 있다. 이러한 이유로 웹 디자이너는
화면을 마음대로 바꿀수 없었고 이러한 문제점을 해결하기 위해 비지니스 로직과
콘텐츠를 분리하기 위한 노력이 있었고  JSP의 탄생이다.

3. 웹 개발시 서블릿을 사용하면 좋은점

1)콘텐츠와 비지니스 로직을 분리할 수 있다.
2)컨트롤러와 뷰의 역할 분담으로 인해 웹 디자이너와 개발자 간의 원할한 작업이 가능하다.
3)유지보수가 수월하다.
4)기능 확장이 용이하다.

4. 서블릿의 동작 과정

1)컨테이너는 서블릿 클래스를 로딩한다.
2)서블릿 클래스의 생성자 메서드를 호출해 인스턴스를 생성한다.
3)생성된 인스턴스위 init()메서드가 호출된다. init()메서드는 서블릿 생명 주기에서 단 한번 수행.
4)서블릿에 대한 사용자 요청에 대해서는 web.xml파일을 참조해 URL매핑 을 확인하고
  해당 서블릿 인스턴스로 부터 스레드를 생성하고 service 메서드를 호출한다.
5)이후 GET/POST 에 대해 doget() doPost() 등의 메소드가 호출된다.
6)destory()  메서드는 서블릿종료 시 호출되는 메서드로 필요한 작업이 있다면 이 메서드에
  구현해주면 된다.

  서블릿 프로그램 작성법 

 (1) 서블릿의 접근 지정자는 항상 public 이어야만 합니다.
  - 애플릿처럼 웹브라우저에서 실행되기때문에
 (2) 서블릿은 javax.servlet.http 패키지에서 제공하는 서블릿 클래스를 상속받아 구현합니다.
  - GenericServlet 클래스 또는 HttpServlet 클래스를 상속받아 구현
 (3) 서블릿은 main() 메소드를 가지지 않습니다.
  - 클라이언트 요청에 따라 main()메소드대신 doGet이나 doPost 메소드가 호출됩니다.
    그러므로 두 메소드를 반드시 오버라이딩 해야합니다.

 (4) 응답방식을 결정해야합니다.
  - setContentType 메소드를 호출하여 응답방식을 결정하고 코드셋을 지정해야합니다.
    예를들어 응답방식이 "text/html" 로 지정되어있으면 text나 html로 보여주겠다는 의미이며,
    한국어를 사용할 경우 코드셋으로 eur-kr로 지정해야합니다.

 (5) 출력 통로를 결정해줍니다.
  - PrinterWriter 객체인 out으로 클라이언트의 웹브라우저에 출력을 합니다.

GET 방법
서버에 있는 정보를 가져오기 위한 설계된 방법이다.
 URL 노출
POST 방법
서버로 정보를 올리기 위해 설계된 방법이다
URL 노출 되지 않는다

서블릿 콘테이너

서블릿 컨테이너의 역할서블릿 컨테이너는 다음과 같은 역할을 수행합니다.

  • 기본적으로 서블릿 컨테이너servlet container는 서블릿을 담는 그릇 구실을 합니다.
    즉, 서블릿 코드를 저장하는 저장장소 역할을 한다는 것입니다.
  • 서블릿 컨테이너는 서블릿의 탑재, 인스턴스화 및 초기화 등 서블릿의 생명주기를 관리합니다.
  • 서블릿 컨테이너는 웹서버 혹은 애플리케이션 서버와 결합되어 요청/응답(request/response)
    패러다임에 따라 네트웍 서비스를 제공합니다. 보다 구체적으로 MIME 기반 요청을
    디코드decode하고 MIME 기반 응답을 구성format합니다.
    Ex)아파치 자카르타 프로젝트의 톰캣(Tomcat), 카우쵸(Caucho)의 레진(Resin),
    IBM의 웹 스피어(WebSpher), 오라클의 OC4J, BEA의 웹로직(WebLogic)과 같은
    서블릿 컨테이너가 자체적으로 HTTP 서버(웹 서버) 기능을 가지고 있는 경우가 대부분이다.  
    멀티 유저 접속시 콘테이너 에서 스레드를 발생 시켜서 동시 접속이 가능하게 처리해준다. 

댓글 없음:

댓글 쓰기