All About Develop/네트워크

Servlet

lxexjx 2022. 11. 9. 14:50

                          Servlet (interrface)

                                       

                             GenericServlet

                                        

                                HttpServlet

                                         ↑

클라이언트       ↔        service()         ↔       doGet(), doPost()

 

 

 

 

[Servlet]

서블릿 프로그램 실행이 생명주기완 관련. init() service(), destroy()

 

1. init()  :  처음 요청 시 서블릿 객체가 생성된 다음 호출되므로 주로 서블릿 객체의 초기화 작업이 구현

2. service()  :  service() 메소드에는 실제 서블릿에서 처리해야 하는 내용이 구현. 

   Servlet 인터페이스에 선언되어 있고, GenericServlet 클래스에 abstract 메소드로 선언되어 있으므로

   HttpServlet 클래스에 메소드 몸체가 구현

3. destroy()  :  서블릿 객체가 메모리에서 삭제될 때 실행

 

 

[HttpServlet]

사용자가 정의하던 service()를 담은 상속 클래스.

 

Servlet클래스는 HttpServlet클래스를 상속받음.

public class HelloWorld extends HttpServlet{
}

클라이언트 요청에 따라 서블릿컨테이너가 service()메서드를 호춯하고

이 service()메서드는 get,post 구분하여 doGet(0, doPost()호출

 

HttpServlet클래스에서 사용자 요청을 처리하는  doGet(), doPost()는 HttpServletRequest와 HttpServletResponse클래스의 객체를 파라미터로 받음.

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
}

 

(톰캣에서 request, response객체 생성)

Http통신과 관련된 데이터 처리 가능

HttpServlet메서드는 HTTP요청에 따라 service메서드(POST, GET, PUT, DELETE) 실행

 

1) GET 방식

데이터를URL파라미터에 붙여 전송.

2) POST 방식

데이터를URL파라미터에 붙여 전송하지 않아 로그인이나 회원가입에서 사용.

 

 

 

 

[웹 사이트가 클라이언트에게]

 

1) 클라이언트가 웹페이지를 보여달라고 요청하는데 그 페이지가 뭔지 URL에 담아서 보냄

2) 클라이언트의 요청이 WAS(톰캣)에 도착해서 등록돼있는 URL매핑중에 맞는거 찾아서

     init()메서드 호출하고 HTTP요청 처리

3) 등록된 매핑중 클라이언트이 요청이 올바르다면 Servlet프로그램실행으로 자원을 응답

4) 웹 서버에 응답한 자원이 클라이언트의 웹브라우저에 도착하고 웹브라우저는 응답받은 내용을 해석해서 보여줌

@WebServlet("/hello")
public class TestServlet extends HttpServlet { }

HttpServlet상속을 받고 URL요청이 들어오면 어노테이션으로 응답에 대한 설정을 함

 

Servlet에서 html작성하려면 response객첼르 이요해 응답을 해야함.

데이터 타입은 Printwrite고, getWrite() 이용해 작성