Servlet

P·2021년 11월 17일
0

Servlet(서블릿)

JVM 기반에서 웹 개발을 하기 위한 API, 간단하게 자바를 이용하여 웹을 만들기 위한 기술

Servlet의 특징

  • 클라이언트의 요청에 대해 동적으로 작동하는 웹 애플리케이션 컴포넌트(Web Application Component)
  • HTML을 사용하여 응답
  • JAVA의 스레드(Thread)를 이용하여 동작
  • MVC 패턴에서 Controller로 이용
  • HTTP 프로토콜 서비스를 지원하는 HttpServlet(javax.servlet.http.HttpServlet) 클래스를 상속받음
  • UDP보다 처리 속도가 느림
  • HTML 변경 시 Servlet을 재 컴파일해야 하는 단점이 있음

Servlet Engine(서블릿 엔진, 서블릿 컨테이너)

  • 서블릿을 실행시킬 수 있는 엔진, Tomcat, Jetty, Undertow같은 WAS(Web Application Server)가 서블릿 엔진
  • 세션 관리, 네트워크 서비스, 서블릿 생명주기 관리, MIME기반 메시지 인코딩, 디코딩 등의 기능 제공

Servlet Lifecycle(서블릿 생명주기)

  1. 서블릿 컨테이너가 서블릿 인스턴스의 init() 메서드를 호출하여 초기화
  2. 서블릿 인스턴스의 service() 메서드를 호출하여 클라이언트 요청 처리, 각각의 요청들은 서로 다른 Thread로 처리
    • HTTP요청(get, post)방식에 따라 doGet() 또는 doPost() 를 재정의
  3. 서블릿 인스턴스의 destroy() 메서드를 호출하여 메모리에서 내림
  4. JVM의 Garbage Collector에 의해 수집됨

GET요청 처리 예제(java 설정)

public class TestServlet extends HttpServlet {
 
    @Override
    public void init() throws ServletException {
        System.out.println("TestServlet Init");
    }
 
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("TestServlet doGet");
        response.setCharacterEncoding("utf-8");
        response.setContentType("text/html");
        PrintWriter writer = response.getWriter();
        
        writer.getWriter().println("<html>");
        writer.getWriter().println("<head>TestServlet 예제</head>");
        writer.getWriter().println("<body><h1>get예제</h1></body>");
        writer.getWriter().println("</html>");
    }
 
    @Override
    public void destroy() {
        System.out.println("TestServlet destroy");
    }
}
@Configuration
public class ServletRegistrationConfig {
 
    @Bean
    public ServletRegistrationBean<TestServlet> getServletRegistrationBean() {
        ServletRegistrationBean<TestServlet> testServletBean = new ServletRegistrationBean<>(new TestServlet());
        testServletBean.addUrlMappings("/testindex");
        return testServletBean;
    }
}

URL로 localhost:8080/testindex 접속 시 위에 정의한 GET방식 요청 처리를 통해 화면에 get예제가 출력됨

profile
개인 정리 공간

0개의 댓글

관련 채용 정보