끵뀐꿩긘의 여러가지

[부스트코스]웹 프로그래밍 13. Servlet(2) 본문

부스트코스 - 웹/1. 웹 프로그래밍 기초

[부스트코스]웹 프로그래밍 13. Servlet(2)

끵뀐꿩긘 2020. 2. 21. 16:29

Servlet 작성 방법

1. Servlet 3.0 spec 이상에서 사용하는 방법

  • web.xml 파일을 사용하지 않습니다.
  • 자바 어노테이션(annotation)을 사용합니다.
  • 앞에서 실습했던 first web에서 사용합니다.

2. Servlet 3.0 spec미만에서 사용하는 방법

  • servlet을 등록할 때 web.xml 파일에 등록합니다.

*wev.xml: web application의 설정을 위한 deployment descriptor

브라우저가 Java Servlet에 접근하기 위해서는 WAS(Ex. Tomcat)에 필요한 정보를 알려줘야 해당하는 Servlet을 호출할 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package examples;
 
import java.io.IOException;
import java.io.PrintWriter;
 
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
/**
 * Servlet implementation class TenServlet
 */
@WebServlet("/ten")
public class TenServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public TenServlet() {
        super();
        // TODO Auto-generated constructor stub
    }
 
    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();
        out.print("<h1>1부터 10까지 출력합니다.<h1>");
        for(int i = 1; i<=10; i++) {
            out.print(i+"<br>");
        }
        out.close();
    }
 
}
cs

위의 코드는 doGet메소드을 활용하여 1~10을 출력하는 코드입니다.

31번째 줄은 이 코드가 html을 사용하여 작성된 코드라는것을 알려주며, 

response. 를 사용하여 페이지에 표현하였습니다.

 

 

 

서블릿의 생명주기

HttpServlet의 3가지 메소드를 오버라이딩

  • init()
  • service(request, response)
  • destroy()

WAS가 서블릿 요청을 받았을때 서블릿을 언제 생성하고 언제 종료하는지 알아봅시다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package examples;
 
import java.io.IOException;
import java.io.PrintWriter;
 
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
 
@WebServlet("/LifecycleServlet")
public class LifecycleServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
 
    public LifecycleServlet() {
        System.out.println("LifecycleServlet 생성!!");
    }
 
    public void init(ServletConfig config) throws ServletException {
        System.out.println("init test 호출!!");
    }
 
    
    public void destroy() {
        System.out.println("destroy 호출!!");
    }
 
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
       {
        System.out.println("service호출!!");        
    }
    
}
cs

 

 

WAS는 서블릿 요청을 받으면 해당 서블릿이 메모리에 있는지 확인합니다.

 if (메모리에 없음) {
 - 해당 서블릿 클래스를 메모리에 올림
 - init() 메소드를 실행
}
 - service()메소드를 실행was가 종료되거나, 웹 어플리케이션이 새롭게 갱신될 경우 destroy() 메소드가 실행됩니다.

 

결과적으로 위와 같이 실행되는 것을 알 수 있습니다.

 

 

참고: https://www.edwith.org/boostcourse-web/lecture/16687/

 

[LECTURE] 2) Servlet 작성 방법 : edwith

들어가기 전에 현재 프로젝트에서 웹을 개발할 때 서블릿을 직접 써서 개발하지는 않습니다. 조금 더 편하게 사용할 수 있게 도와주는 다양한 프레임워크를 사용해서 개발하는 경우가 더 ... - 부스트코스

www.edwith.org

https://www.edwith.org/boostcourse-web/lecture/16688/

 

[LECTURE] 3) Servlet 라이프 싸이클 : edwith

들어가기 전에 어떤 객체의 생성부터 소멸까지의 과정을 라이프 사이클(Life Cycle)라고 합니다. 이번 학습에서는 서블릿의 라이프 사이클을 알아봅니다.     학습 목표 서블릿... - 부스트코스

www.edwith.org


servlet이 무엇인가에 이어 servlet을 작성하는 방법 servlet이 언제 생성되고 종료되는지 알아보았습니다.

 

Comments