728x90
Servlet
Servlet이란?
Servlet은 자바 클래스로, 웹 서버(예: Tomcat)에서 동작하며 HTTP요청을 처리하고 응답을 생성하는 역할을 합니다.
클라이언트(웹 브라우저 등)와 서버 사이의 요청 및 응답 흐름을 관리합니다.
서블릿은 서버에서 실행되다가 웹 브라우저에서 요청을 하면 해당 시능을 수행한 후 웹 브라우저에 결과를 전송합니다.
쉽게 예를들면 로그인 시도를 할 때, 서버가 클라이언트에서 입력되는 요청(Request)을 확인하고 결과를 응답(Response)하는데
이러한 역할을 서블릿이 수행합니다.
Servlet의 역할
- 요청 처리
- 클라이언트의 HTTP 요청을 수신
- 요청 데이터를 분석(예: 폼 데이터, 쿼리 파라미터 등)
- 비즈니스 로직 수행
- 데이터베이스 접근, 파일 처리, 계산 등을 수행
- 응답 생성
- HTML, JSON, XML 등 동적인 콘텐츠를 생성하여 클라이언트로 전송
- 상태 관리
- 세션과 쿠키를 사용하여 클라이언트 상태 관리
Servlet 동작 원리
요청-응답 흐름
- 클라이언트 요청 - 브라우저에서 URL 입력 또는 폼 제출
- 웹 서버(Web Container) - 요청을 수신하고, 해당 요청을 처리할 서블릿을 결정
- 서블릿 실행 - 요청 처리 및 비즈니스 로직 수행
- 응답 반환 - 클라이언트에게 HTML, JSON 등의 응답 반환
Servlet의 생명 주기
- Servlet은 Servlet 인터페이스에 정의된 세가지 주요 메서드를 통해 동작합니다.
- 1 ) 초기화(Init)
- 서블릿이 최초 요청될 때 한 번만 호출
- 리소스 초기화 및 설정 작업 수행
- 메서드: public void init(ServletConfig config)
- 2 ) 서비스(Service)
- 클라이언트의 요청을 처리하고 응답을 반환
- 메서드: public void service(ServletRequest request, ServletResponse response)
- 주로 doGet()과 doPost() 메서드로 요청 구분.
- 3 ) 소멸(Destroy)
- 서버가 종료되거나 서블릿이 제거될 때 호출
- 자원 해제 및 정리 작업 수행
- 메서드: public void destroy()
Servlet 예제 코드
import javax.servlet.*; import javax.servlet.http.*; import java.io.IOException; class HelloServlet: HttpServlet() { // 초기화(init) override fun init() { println("Servlet 초기화") } // GET 요청 처리 (doGet) override fun doGet(request: HttpServletRequest, response: HttpServletResponse) { response.contentType = "text/html" response.writer.println("<h1>Hello, Kotlin Servlet!</h1>") } // POST 요청 처리 (doPost) override fun doPost(request: HttpServletRequest, response: HttpServletResponse) { response.contentType = "text/html" response.writer.println("<h1>POST 요청 처리 완료!</h1>") } // 소멸(destroy) override fun destroy() { println("Servlet 종료!") } }
- init(): 서블릿 초기화 시 실행
- doGet(): GET 요청을 처리하고 HTML응답을 반환
- destroy(): 서블릿 종료시 실행
Servlet Container
- 서블릿 생명주기 관리
- 서블릿 객체 생성 및 초기화(init)
- 요청 처리 (service -> doGet, doPost)
- 서블릿 소멸 처리(destroy)
- 요청과 응답 관리
- HTTP요청/응답 처리 - 요청을 서블릿으로 전달하고, 응답을 생성해 클라이언트로 반환
- 요청 파라미터 추출 - GET 또는 POST 요청에서 전달되는 파라미터 처리
- 세션 관리 - 쿠키 및 세션을 통해 사용자 상태 관리
- 멀티스레드 지원
- 여러 클라이언트 요청을 동시에 처리(멀티스레드)하여 성능을 최적화
- 보안 관리
- 인증 및 인가 - HTTP Basic 인증, SSL등 보안 기능 제공
- 요청 필터(Filter)와 리스너(Listener)를 활용한 보안 정책 적용
- 자원 관리
- 파일 업로드 처리 및 데이터베이스 연결 풀 관리
728x90
'Kotlin' 카테고리의 다른 글
AOP (Aspect-Oriented Programming) - 관점 지향 프로그래밍 (0) | 2024.12.23 |
---|---|
DI (Dependency Injection) - 의존성 주입 (0) | 2024.12.20 |
스프링 IoC(Inversion of Contorl) - 제어의 역전 (1) | 2024.12.20 |
Kotlin Class 알아보기 1(Class, Data Class, Enum Class, Abstract Class) (1) | 2024.12.19 |