Servlet = 웹에서 실행할 수 있는 자바
서블릿(Servlet)이란 동적 웹 페이지를 만들 때 사용되는 자바 기반의 웹 애플리케이션 프로그래밍 기술
✏️1. WebArchitecture
브라우저의 역할 = 보이는 역할(View)
서버에는 3가지 역할이 있다.
- Web Server
- HTTP를 처리할 수 있는 서버
- HTTP 서버는 웹에 연결하게 해준다.
- 만들어진걸 사용자에게 전달해준다.(Client 접속, 응답 처리)
- HTTP 서버라서 Client의 요청을 Application Server로 전달한다.
- Application Server
- Business Logic(단순한 일처리)
- Persistence Logic(연속성) - DB, DAO역할이다. (DAO는 데이터베이스와 연결하여 작업하는거)
- Persistence Logic에서 JDBC를 통해 DataBase와 연결된다.
- Presentation - 응답페이지(HTML)
- RDBMS
WAS = Web Server + Application Server
- WAS(Web Application Server 로 톰캣을 사용할 거다.
- Dynamic Web Project = java + web
✏️2. Servlet
Servlet vs JSP 차이
- Servlet : java 코드 안에 html 있는 거
- html 코드를 "" 안에 넣어야해서 불편함
- JSP : html 중간중간에 java 코드 들어가는거
- java 코드를 쓰려면 스크립틀릿( <% ) 이런거 사용해야 한다.
- 두 개는 똑같은데 외형적으로 좀 다른거다.
Servlet 특징
- 클라이언트의 요청에 대해 동적으로 작동하는 웹 어플리케이션 컴포넌트
- html을 사용하여 요청에 응답한다.
- Java Thread를 이용하여 동작한다.
- MVC 패턴에서 Controller로 이용된다.
- HTTP 프로토콜 서비스를 지원하는 javax.servlet.http.HttpServlet 클래스를 상속받는다.
- UDP보다 처리 속도가 느리다.
- HTML 변경 시 Servlet을 재컴파일해야 하는 단점이 있다.
Servlet 동작 방식
1. 클라이언트가 URL 입력하면 HTTP Request가 Servlet Container로 전송
2. 요청을 전송받은 Servlet Container는 HttpServletRequest, HttpServletResponse 객체를 생성
3. web.xml을 기반으로 사용자가 요청한 URL이 어느 Servlet에 대한 요청인지 찾기
4. 해당 서블릿에서 service메소드를 호출한 후 클리아언트의 GET, POST여부에 따라 doGet() 또는 doPost()를 호출
5.doGet() or doPost() 메소드는 동적 페이지를 생성한 후 HttpServletResponse객체에 응답을 보냅니다.
6. 응답이 끝나면 HttpServletRequest, HttpServletResponse 두 객체를 소멸시킵니다.
✏️2. Servlet Life-cycle
서블릿의 생명주기 메소드
-
init()
서블릿을 처음 메모리에 올릴때 실행되어, 서블릿을 초기화하며 처음에 한번만 실행됩니다.
-
service()
요청/응답(request/response)을 처리하며 요청이 GET인지 POST인지 구분하여 doGet() 또는 doPost() 메소드로 분기됩니다.
-
destroy()
서블릿 종료요청이 있을때 destroy() 메소드가 실행됩니다.