[Day 19 | JSP] JSP (Java Server Page) / Servlet 개념

y♡ding·2024년 11월 7일
0

데브코스 TIL

목록 보기
127/163

Servlet 이란?

Servlet은 Java 클래스의 일종으로, 웹 서버에서 실행되는 서블릿 컨테이너(Servlet Container) 내에서 동작하며, 클라이언트(주로 웹 브라우저)의 요청을 처리하고 응답을 생성합니다. Servlet은 HTTP 요청 및 응답을 처리하기 위해 HTTP 프로토콜을 사용하며, 데이터베이스와의 상호작용, 비즈니스 로직 처리, 데이터 연산 등을 수행하여 클라이언트에게 동적인 HTML 페이지나 JSON 데이터를 전달할 수 있습니다.

Servlet의 주요 개념

  • 서블릿 컨테이너: Servlet은 서블릿 컨테이너(Servlet Container)라고 불리는 서버 환경에서 동작합니다. 서블릿 컨테이너는 웹 서버와 함께 작동하며, 클라이언트의 요청을 받아 적절한 서블릿 인스턴스를 호출하고, 응답을 생성하여 클라이언트에게 전달하는 역할을 합니다. Tomcat, Jetty 등이 대표적인 서블릿 컨테이너입니다.
  • 라이프 사이클: Servlet은 일정한 생명주기(Lifecycle)를 갖습니다. 컨테이너는 Servlet이 처음 요청을 받을 때 생성하고, 종료 시점에 삭제합니다.
    • init(): Servlet이 생성될 때 초기화 작업을 수행하는 메서드.
    • service(): 클라이언트의 요청을 받아 적절한 처리를 수행하는 메서드. 이 메서드는 요청 방식(GET, POST)에 따라 doGet() 또는 doPost() 메서드를 호출합니다.
    • destroy(): Servlet이 종료될 때 호출되며, 메모리 해제 등 정리 작업을 수행합니다.
  • HttpServlet: 대부분의 웹 애플리케이션에서 사용하는 Servlet 클래스는 HttpServlet 클래스입니다. HttpServletjavax.servlet.http.HttpServlet을 상속하여 생성하며, HTTP 요청을 처리하기 위해 주로 doGet()doPost() 메서드를 오버라이드하여 요청을 처리합니다.

Servlet의 주요 특징

  • HTTP 요청 및 응답 처리: Servlet은 HTTP GET, POST, PUT, DELETE 등의 요청을 처리하여 다양한 응답을 생성할 수 있습니다.
  • Java 코드로 구현: Servlet은 Java 코드로 작성되며, javax.servletjavax.servlet.http 패키지를 통해 요청과 응답 객체를 사용할 수 있습니다.
  • 컨트롤러 역할: Servlet은 클라이언트의 요청을 받아 필요한 로직을 처리한 뒤, JSP와 같은 뷰 페이지로 데이터를 전달합니다. 따라서 MVC 패턴에서 컨트롤러 역할을 수행할 수 있습니다.

Servlet의 기본 구조

Servlet은 Java 클래스이기 때문에 HttpServlet을 상속받아 만들어지며, 요청을 처리하기 위해 doGet()doPost() 메서드를 오버라이드합니다.

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

public class MyServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html");
        response.getWriter().println("<h1>Hello, Servlet!</h1>");
    }
}

Servlet의 동작 과정

Servlet은 클라이언트 요청이 있을 때마다 컨테이너에 의해 호출되고, 다음과 같은 절차로 동작합니다.

  1. 클라이언트 요청: 사용자가 웹 브라우저에서 특정 URL로 요청을 보냅니다. 이 요청은 웹 서버를 통해 서블릿 컨테이너로 전달됩니다.
  2. 요청 처리: 서블릿 컨테이너는 URL 매핑을 통해 요청을 처리할 적절한 서블릿을 찾고, service() 메서드를 호출합니다. 이때 요청 방식에 따라 doGet() 또는 doPost() 메서드를 호출하여 요청을 처리합니다.
  3. 응답 생성: Servlet은 요청에 따라 데이터를 처리하고, HTML, JSON 등 형식의 응답을 생성하여 클라이언트에게 전송합니다.
  4. 응답 반환: 클라이언트는 Servlet에서 생성된 응답을 웹 페이지 또는 데이터로 받아 볼 수 있습니다.

Servlet과 JSP의 관계

Servlet은 주로 비즈니스 로직과 데이터를 처리하는 컨트롤러 역할을 수행하며, JSP는 사용자에게 보여줄 프론트엔드 화면을 생성하는 역할을 수행합니다. 이러한 구조에서 Servlet은 데이터를 처리한 후 JSP 페이지로 전달하여 최종 HTML 응답을 생성하는 방식으로, MVC 패턴을 통해 역할을 분리하는 것이 일반적입니다.


JSP (JavaServer Pages) 란?

JSP는 HTML 내에 Java 코드를 삽입하여 동적인 웹 페이지를 생성하는 기술입니다. JSP는 웹 페이지의 레이아웃이나 디자인을 정의하는 동시에 Java 코드를 삽입하여 서버에서 데이터를 처리하고 표시할 수 있게 합니다. JSP는 Servlet으로 변환되어 실행되기 때문에, 기본적으로 Servlet의 기능을 확장한 형태로 볼 수 있습니다.

JSP의 주요 특징

  • HTML과 Java의 결합:
    JSP는 HTML 내에 Java 코드를 삽입할 수 있는 방식으로, 동적인 콘텐츠를 HTML에 손쉽게 통합할 수 있습니다. 이를 통해 정적인 HTML과 동적인 데이터를 함께 표현할 수 있습니다.
  • 서버 측에서 동작:
    JSP는 클라이언트가 요청을 보내면 서버에서 실행되고, 최종적으로 HTML 형태로 클라이언트에게 전송됩니다. 클라이언트는 JSP 페이지가 아닌 JSP가 생성한 HTML 페이지를 받아보게 됩니다.
  • Servlet으로 변환:
    JSP는 실제로 Servlet으로 변환되어 실행됩니다. 즉, JSP 파일은 최초 요청 시 서블릿 코드로 컴파일되고, 그 이후에는 컴파일된 서블릿이 사용됩니다. 따라서 JSP와 Servlet은 본질적으로 동일한 기능을 수행할 수 있으며, JSP는 Servlet의 문법을 좀 더 간편하게 만든 형식이라고 볼 수 있습니다.
  • MVC 패턴에서 View 역할:
    JSP는 MVC 패턴에서 주로 View 역할을 수행합니다. 컨트롤러(Servlet)가 데이터를 처리하고, 그 데이터를 JSP로 전달하면, JSP는 HTML 페이지를 생성하여 사용자에게 데이터를 표시합니다.

JSP의 기본 구조

JSP 페이지에서는 HTML과 함께 <% %> 문법을 사용하여 Java 코드를 작성할 수 있습니다.

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>JSP Example</title>
</head>
<body>
    <h1>Hello, JSP!</h1>
    <% 
        String name = "홍길동";
        out.println("<p>안녕하세요, " + name + "님!</p>");
    %>
</body>
</html>

Oracle JSP 공식 문서 - JSP와 Servlet에 대한 기본 개념과 예제를 제공

0개의 댓글

관련 채용 정보