소소한개발팁
article thumbnail
Published 2023. 9. 24. 18:54
서블릿(Servlet) 프레임워크/Spring
반응형

서블릿(Servlet)이란?

서블릿은 자바 언어로 작성된 웹 애플리케이션 컴포넌트입니다. 서블릿은 웹 서버에서 실행되며, 클라이언트의 HTTP 요청을 처리하고 동적인 웹 페이지를 생성하는 데 사용됩니다. 서블릿은 일반적으로 웹 애플리케이션의 비즈니스 로직을 구현하고, 데이터베이스와 상호작용하며, 사용자 요청에 따라 동적인 콘텐츠를 생성하는 데 활용됩니다.

 

서블릿의 특징

Platform Independence (플랫폼 독립성): 서블릿은 자바 언어로 작성되므로 플랫폼 독립성을 제공합니다. 즉, 서블릿은 한 번 작성하고 다양한 웹 서버에서 실행할 수 있습니다.

Thread Safety (쓰레드 안전성): 서블릿 컨테이너는 서블릿 인스턴스를 관리하고 여러 클라이언트 요청에 대한 병렬 처리를 지원합니다. 이로 인해 서블릿은 쓰레드 안전성을 보장하며, 동시 다발적인 요청을 처리할 수 있습니다.

Lifecycle Management (라이프사이클 관리): 서블릿은 라이프사이클 메서드를 통해 초기화, 서비스, 소멸 등의 단계를 관리합니다. 이를 통해 서블릿이 초기화 작업을 수행하거나 필요한 자원을 해제할 수 있습니다.

HTTP Protocol Support (HTTP 프로토콜 지원): 서블릿은 주로 HTTP 프로토콜을 사용하여 클라이언트와 통신합니다. 따라서 웹 애플리케이션을 개발할 때 HTTP 요청과 응답을 처리하는 데 적합합니다.

Extensibility (확장성): 서블릿은 자바 언어와 함께 다양한 라이브러리와 프레임워크를 활용하여 확장할 수 있습니다. 이를 통해 웹 애플리케이션의 기능을 향상시킬 수 있습니다.

 

서블릿 작성 및 배포

서블릿 클래스 작성: 자바 클래스로 서블릿을 작성합니다. 이 클래스는 javax.servlet.Servlet 인터페이스를 구현하거나 javax.servlet.http.HttpServlet 클래스를 상속받아야 합니다.

라이프사이클 메서드 구현: 서블릿 클래스 내에서 init(), doGet(), doPost(), destroy() 등의 라이프사이클 메서드를 구현합니다. 각 메서드는 특정한 작업을 수행하도록 설계됩니다.

배포 서술자(Deployment Descriptor) 작성: 웹 애플리케이션의 web.xml 파일에 서블릿 클래스와 URL 매핑 정보를 추가합니다. 이 파일은 서블릿 컨테이너에게 서블릿을 등록하는 역할을 합니다.

컴파일 및 배포: 서블릿 클래스를 컴파일하고, 웹 애플리케이션 디렉터리에 배치합니다. 이후 웹 서버가 서블릿을 로드하고 요청에 따라 실행합니다.

 

서블릿의 활용

서블릿은 다양한 웹 애플리케이션에서 사용됩니다. 주요 활용 예시로는 다음과 같은 것들이 있습니다:

웹 페이지 동적 생성: 서블릿은 사용자 요청에 따라 동적인 웹 페이지를 생성할 수 있어, 동적 콘텐츠를 제공하는 데 적합합니다.

웹 어플리케이션 로직 구현: 서블릿은 비즈니스 로직을 처리하고 데이터베이스와 상호작용하는 데 사용됩니다.

RESTful 웹 서비스: 서블릿을 활용하여 RESTful 웹 서비스를 개발할 수 있으며, 데이터의 CRUD(Create, Read, Update, Delete) 작업을 수행할 수 있습니다.

사용자 인증 및 권한 관리: 서블릿을 사용하여 사용자 인증과 권한 부여를 구현할 수 있습니다.

 

 

반응형

 

HttpServletRequest 

HttpServletRequest는 웹 애플리케이션에서 클라이언트로부터의 HTTP 요청을 처리하는 데 사용되는 중요한 클래스입니다. 이 클래스는 서블릿(Servlet)에서 요청 정보를 추출하고, 클라이언트가 전송한 데이터에 접근하는 데 도움을 줍니다.

HttpServletRequest의 주요 메서드
getMethod(): HTTP 요청 메서드를 반환합니다 (예: GET, POST).
getParameter(String name): 지정된 이름의 HTTP 요청 매개변수를 반환합니다.
getAttribute(String name): 지정된 이름의 요청 속성을 반환합니다.
getInputStream(): 요청 본문의 입력 스트림을 반환합니다.
getSession(): 세션을 관리하기 위한 HttpSession 객체를 반환합니다.

 

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class MyServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
        String name = request.getParameter("name");
        response.getWriter().println("Hello, " + name + "!");
    }
}

 

HttpServletResponse

HttpServletResponse는 서블릿에서 HTTP 응답을 생성하고 클라이언트로 보내는 데 사용됩니다. 이 클래스를 사용하여 응답의 상태 코드, 헤더 및 본문을 설정할 수 있습니다.

HttpServletResponse의 주요 메서드
setStatus(int sc): 응답의 HTTP 상태 코드를 설정합니다 (예: 200 OK, 404 Not Found).
setHeader(String name, String value): 응답 헤더를 설정합니다.
getWriter(): 응답 본문을 출력하기 위한 PrintWriter 객체를 반환합니다.
sendRedirect(String location): 클라이언트를 다른 URL로 리다이렉션합니다.

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class MyServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
        response.setStatus(HttpServletResponse.SC_OK);
        response.setHeader("Content-Type", "text/plain");
        response.getWriter().println("This is a simple servlet response.");
    }
}
반응형

'프레임워크 > Spring' 카테고리의 다른 글

Spring MVC  (0) 2023.09.28
쓰레드(Thread)  (1) 2023.09.24
Mybatis  (0) 2020.01.14
AOP(3)  (0) 2020.01.13
AOP(2)  (0) 2020.01.12
profile

소소한개발팁

@개발자 뱅

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!