Programming/Servlet & JSP

Servlet (1) - Servlet이란?

코딩하는 포메라니안 2022. 3. 23. 00:19

1. Servlet이란?

간단히 말해서, JAVA + Web이다.

JAVA로 웹페이지를 동적으로 생성하는 서버 프로그램을 의미하며, Java코드 안에 HTML을 포함하는 형태이다.

 

public class Hello extends HttpServlet {
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		
		String name= "홍길동";
		out.println("");
		out.println("<html>");
		out.println("<body>");
		out.println("안녕하세요! "+name+"입니다.");
		out.println("</body>");
		out.println("</html>");
		//Servlet = html를 java에 넣음 => ""지옥..
	}
}

 

 

 

2. Servlet 상속 구조

- Servlet 구현 방법

1) Servlet을 구현

2) GenericServlet을 상속

3) HttpServlet을 상속 (주로 사용됨)

 

 

 

 

3. Servlet 동작 과정

1. 전체 과정

 

 

- WAS에 Servlet을 1개 등록해서 이용

- Servlet Container가 Servlet을 관리한다. Servlet Container란 Web Container인 WAS를 말한다.

- class(main method가 없음)를 만들어서 Servlet을 등록하면 알아서 실행 (@WebServlet("서블릿 이름"))

 

1) 첫 client에 의한 최초 요청을 받으면, Servlet Container는 Servlet 객체를 생성하고 초기화(한 번만)

2) 여러 client들의 요청을 받을 때마다 thread를 만들어서 요청 처리

3) Servlet 객체가 필요 없을 때 제거(한 번만)

=> Servlet 객체 1개로 여러 요청을 처리

 

 

2. 세부 과정(Life-Cycle)

 

 

1) Constructor 생성자

2) init()

- 서블릿이 메모리에 로드될 때 한번 호출

3) service(), doGet(), doPost()

- service()에서 요청 방식이 get인지 post에 따라 doGet() 혹은 doPost()를 호출

- doGet() 혹은 doPost()를 바로 호출도 가능

- 여러 thread를 만들어 요청 처리

4) destroy

- 서블릿이 메모리에서 해제되면 호출

 

*코드 수정 시 => destory() => init()