Servlet ?
❗JSP와 Servlet의 차이는 ?
Servlet의 주요 특징
Servlet 객체의 상속 구조
사진 출처 : https://woojong92.tistory.com/entry/Servlet구조와-HttpServlet-클래스
Servlet의 동작 과정
- 클라이언트의 요청이 들어온다
- HttpServletRequest, HttpServletResponse 객체가 생성된다.
- Web.xml이 어느 Servlet에 대한 요청인지 탐색한다.
- 해당하는 Servlet에서 service() 메서드를 호출한다.
- doGet() 혹은 doPost() 메서드가 호출된다
- 동적 페이지 생성 후, ServletResponse 객체에 응답을 전송한다
- HttpServletRequest, HttpServletResponse 객체가 소멸한다.
WAS?
web.xml
서블릿을 작성했다면 해당 서블릿을 사용자가 요청한 경로와 매핑 시켜야 WAS에서 매핑된 정보를 읽어서, 브라우저에서 해당 URL로 HTTP 요청 시 해당 서블릿으로 요청을 전달해 줄 수 있다.
톰캣을 예로 들면, 웹 어플리케이션 서비스 처리에 대해 정의된 환경 설정 파일이 server directory의 web.xml에 있다.
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="https://jakarta.ee/xml/ns/jakartaee" xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd" version="6.0">
<servlet>
<description></description>
<display-name>HelloServlet</display-name>
<servlet-name>basic</servlet-name>
<servlet-class>com.basic.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>basic</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
Servlet과 Servlet mapping은 하나의 세트이다. Servlet name을 꼭 맞춰주어야 한다. 이를 입력하면 WAS가 자동으로 매핑해준다.
Servlet 형식
public class FirstServlet extends HttpServlet {
@Override
public void init() {
...
}
@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp) {
...
}
@Override
public void destroy() {
...
}
Servlet Life Cycle
빨간색 : 최초 요청시 한번만 실행
파란색 : 요청 시 마다 반복 실행
init()
doGet()
doPost()
service()
destroy()
Container, Context ?
❗위 두가지 개념이 나오면서, 두 개의 절대 경로가 등장한다.
❗ Servlet에서는 자바 코드를 이용한 business logic과 html을 이용한 presentation logic이 섞여서 등장한다.
@WebServlet
package com.edu.first;
import java.io.IOException;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
@WebServlet("/hi")
public class HiServlet extends HttpServlet {
public void init(ServletConfig config) throws ServletException {
System.out.println("init() 실행");
}
public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
System.out.println("service() 실행");
}
}
출처를 남긴 이미지 외의 이미지들은 직접 만든 이미지 입니다 ! 무단 복제 X
이 글을 읽고 SSAFY 월말 평가 100점 맞았습니다. 감사합니다!