WEB
Servlet 구조 분석(2) - GenericServlet
긍.응.성
2020. 4. 18. 15:39
반응형
Servlet 구조 분석(1) - Servlet, ServletConfig, ServletContext에 이어 Servlet의 구현체인 GenercServlet에 대해 분석해보았습니다.
4. abstract class GenericServlet
Servlet을 상속하고 있으며 프로토콜에 독립적으로 사용될 수 있는 Servlet구현체입니다.
웹을 위한 HTTP 서블릿을 사용하고 싶다면 HttpServlet을 사용하면 된다.
Oracle에서 제공하는 docs에서는 반복해서 GenericServlet보다 HttpServlet을 더 추천하는 것 느낌인데, 그만큼 HTTP Protocol을 사용하는 서비스가 대다수이기 때문이라 생각한다.
GenericServlet은 기존의 Servlet인터페이스를 이용하는 것보다 더 쉽게 작성하여 사용할 수 있는데 간단한 버전으로 Lifecycle에 관련된 init()과 destory() 메서드와 ServletConfig를 제공하고 있기 때문이다. 또한 ServletContext 내부 메서드인 log 또한 제공하고 있다.
결국 GenericServlet를 사용하기 위해서는 service() 메서드만 구현하면 된다.
package javax.servlet;
...
public abstract class GenericServlet implements Servlet, ServletConfig, Serializable {
...
private transient ServletConfig config;
public GenericServlet() {} // 생성자는 아무것도 하지 않는다
public void destroy() {} // empty
...
public void init(ServletConfig config) throws ServletException {
this.config = config;
this.init();
}
public void init() throws ServletException {
}
public void log(String msg) {
this.getServletContext().log(this.getServletName() + ": " + msg);
}
// 기존의 Servlet interface를 상속받았다면 직접 구현해야할 메서드 init(), destroy() 등은 이미 구현되어있다
public abstract void service(ServletRequest response, ServletResponse reqest) throws ServletException, IOException;
// 사용자는 service함수만 구현하면 Servlet을 생성하여 사용할 수 있다.
// 기능은 Servlet interface의 service() 와 같다.
...
}
※ 참고자료
반응형