상세 컨텐츠

본문 제목

[2th] Servlet 개념

Java/Servlet

by 탑~! 2012. 5. 17. 11:42

본문

servlet은 Servlet인터페이스를 구현하여 GenericServlet을 만들고

이를 다시 Http프로토콜에 맞게 확장한 HttpServlet 클래스를 상속한 후 내부 메서드를 재정의하여 사용한다.

 

 

 

 

서블릿의 주기메서드는 크게 inti, service, destroy메서드 인데 init과 destroy메서드는 서블릿이 생성, 파괴될때 사용되어지는 메서드.

클라이언트의 요청에 반응하는 메서드는 service메서드.

service메서드는 클라이언트의 요청 방식에 따라 doGet, doPost를 자동으로 호출한다.

 

서블릿은 클라이언트의 요청이 있을 때 클라이언트의 요청을 서블릿이 처리하게 되며 만약 데이터베이스에 연결을 해야 한다면

서블릿에서 처리한 후 그 결과를 클라이언트에게 리턴하게 된다.

 

 

서블리의 동작순서

클라이언트의 요청>>

서블릿 Handle 8080포트에서 요청 받음

서블릿 컨테이너에서 해당 서블릿 검색

해당 서블릿이 데이터 베이스 작업을 해야 한다면 DB연결, 작업

모든 작업이 완료 되었다면 응답으로 결과를 리턴.

 

서블릿은 서블릿컨테이너가 관리하게 되며 각각의 서블릿은 클래스를 로딩하여 하나의 객체를 생성하게 된다.

그리고 하나의 객체 메모리를 공유하면서 서블릿 객체의 service 메서드 만으로 클라이언트의 요청을 처리한다.

각각의 서블릿은 HttpServlet클래스를 상속받아 service,doGet,doPost등의 메서드를 재정의 하게 되며

해당 메서드는 클라이언트의 요청에 따라 자동으로 요청에 적합한 메서드를 호출하게 된다.

 

 

서블릿의 상속구조

 

 대부분 http프로토콜 상에서 작업을 하기 때문에 http프로토콜에 맞게 확장되어진 httpServlet클래스를 상속해서 재정의해서 사용한다.

httpservlet은 그림과 같이 여러개의 인터페이스를 포함한 GenericServlet을 상속받는다.

 

GenericService는 서블릿, 클라이언트와 네트웍통신을 할 때 필요한 인터페이스를 구현한 것.

그리고 구현된 ,GenericServlet을 http프로토콜에 맞게 다시 확장시킨것이 httpServlet.

GenericServlet은 abstract클래스이기 때문에 그 자체로는 사용할 수 없으며 반드시 상속해야만 사용할 수 있다.

 

 GenericServlet 클래스

 void init(): 서블릿의 초기화를 수행합니다.

 void init(ServletConfig config)

 : 서블릿을 시작할 때 호출하여, 필요한 자원을 할당하는 등의 서블릿을 초기화 하고, 서비스를 시작할 수 있도록 합니다.

 abstract void service(ServletRequest req, ServletResponse res)

 : 서블릿이 초기화 된 후 클라이언트로부터 온 요청에 대한 서비스를 수행합니다. 이 메소드는 추상 메소드이므로,

   서블릿을 작성하기 위해 GenericServlet 클래스를 상속하는 모든 하위클래스에서 반드시 구현해 주어야 하는 메소드입니다.

 void destroy(): 서블릿을 종료할 때 호출하여, 필요한 자원을 할당 해제 하는 등의 작업을 할 수 있도록 합니다.

 java.lang.String getInitParameter(java.lang.String name)

 : 주어진 이름의 초기화 매개변수의 값을 포함하고 있는 문자열을 얻습니다.

 java.util.Enumeration getInitParameterNames()

 : 서블릿을 위한 초기화 매개변수의 이름을 문자열 객체의 enumeration으로 얻습니다.

 ServletConfig getServletConfig(): 서블릿에 대한 초기화/시작 매개변수 등을 포함하고 있는 ServletConfig 객체를 얻습니다.

 ServletContext getServletContext()

 : 서블릿이 실행되는 서블릿 엔진에 대한 정보를 포함하고  있는 ServletContext 객체를 얻습니다

 java.lang.String getServletInfo()

 : 서블릿의 작성자(author), 버전(version), 저작권(copyright) 등과 같은 서블릿 관련 정보를 제공해 주기 위해 재정의해 주어야 합니다.

 void log(java.lang.String msg): 서블릿의 클래스 이름과 서블릿 예외 메시지를 서블릿의 로그 파일에 기록합니다.

 void log(java.lang.String message, java.lang.Throwable t): 시스템 예외 메시지를 서블릿 로그 파일에 기록합니다.

 

 

 

 

[출처] 서블릿(1)|작성자 kkan

 

'Java > Servlet' 카테고리의 다른 글

Tomcat 과 Servlet 버전 지원  (0) 2014.06.10
[4th] Servlet 개념  (0) 2012.05.17
[2th] Servlet 개념  (0) 2012.05.17
[1th] Servlet 개념  (0) 2012.05.17

관련글 더보기