반응형

서블릿(Servlet)

**서블릿(Servlet)**은 자바 기반 웹 애플리케이션에서 클라이언트의 요청을 처리하고 동적 콘텐츠를 생성하는 서버 측 컴포넌트입니다. HTTP 프로토콜을 기반으로 하며, Java Servlet API를 통해 동작합니다. 주로 HTML, JSON, XML 등의 응답을 생성하여 클라이언트에 반환합니다.

이 글에서는 서블릿의 개념과 함께 클라이언트에서 데이터를 보내고 받는 방법, 그리고 서블릿에서 JSP를 통해 데이터를 반환하는 방법을 예제와 함께 설명합니다.


서블릿의 주요 기능

  1. 클라이언트 요청 처리:
    • GET, POST, PUT 등의 HTTP 요청을 처리합니다.
  2. 데이터 처리 및 로직 수행:
    • 서버에서 필요한 비즈니스 로직을 수행하고 데이터베이스와 상호작용합니다.
  3. 응답 생성:
    • 클라이언트가 이해할 수 있는 형식(HTML, JSON 등)으로 데이터를 반환합니다.

클라이언트에서 서블릿에 데이터 보내는 방법

클라이언트는 GET 또는 POST 요청을 통해 데이터를 서블릿에 보낼 수 있습니다.

1. GET 요청을 통한 데이터 전송

GET 요청은 URL에 데이터를 쿼리 문자열(Query String)로 포함하여 전송합니다.

- URL뒤에 ?와 &이용하여 데이터를 포함

 

클라이언트 요청 예시:

<a href="http://localhost:8080/MyServlet?name=John&age=30">Send Data</a>

서블릿에서 GET 요청 처리:

request.getParameter()이용하여 클라이언트가 보낸 데이터를 받습니다.

import jakarta.servlet.*;
import jakarta.servlet.http.*;
import java.io.IOException;

public class MyServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
	    // 데이터 수신
        String name = request.getParameter("name");
        String age = request.getParameter("age");

        // 응답 작성
        response.setContentType("text/html");
        response.getWriter().println("<h1>Name: " + name + ", Age: " + age + "</h1>");
    }
}

2. POST 요청을 통한 데이터 전송

POST 요청은 데이터를 요청 본문(Body)에 포함하여 전송합니다.

- form 태그 이용하여 action에 URL, method에 POST 입력

- input 태그 이용하여 입력 받은 데이터를 요청 본문(Body)에 포함 

 

클라이언트 요청 예시:

<form action="http://localhost:8080/MyServlet" method="POST">
    <input type="text" name="name" placeholder="Enter your name">
    <input type="number" name="age" placeholder="Enter your age">
    <button type="submit">Submit</button>
</form>

서블릿에서 POST 요청 처리:

request.getParameter()이용하여 클라이언트가 보낸 데이터를 받습니다.

import jakarta.servlet.*;
import jakarta.servlet.http.*;
import java.io.IOException;

public class MyServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
        // 데이터 수신
        String name = request.getParameter("name");
        String age = request.getParameter("age");

        // 응답 작성
        response.setContentType("text/html");
        response.getWriter().println("<h1>Name: " + name + ", Age: " + age + "</h1>");
    }
}

서블릿에서 클라이언트에 데이터 보내는 방법 (JSP 사용)

서블릿은 JSP와 연동하여 동적 웹 페이지를 생성할 수 있습니다.

- request.setAttribute("dataName", Data)를 이용하여 JSP에 데이터 전송

 

1. 서블릿에서 JSP로 데이터 전달:

import jakarta.servlet.*;
import jakarta.servlet.http.*;
import java.io.IOException;

public class MyServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 데이터 설정
        request.setAttribute("message", "Hello from Servlet!");

        // JSP로 포워딩
        RequestDispatcher dispatcher = request.getRequestDispatcher("/display.jsp");
        dispatcher.forward(request, response);
    }
}

2. JSP에서 데이터 출력:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<title>Servlet to JSP</title>
</head>
<body>
<h1>Message from Servlet: ${message}</h1>
<h1>Message from Servlet: <%= message></h1>
</body>
</html>

 


서블릿과 JSP의 활용 예시

  1. 로그인 시스템:
    • 클라이언트가 로그인 폼에서 입력한 데이터를 서블릿으로 보내 검증 후 JSP로 결과를 반환.
  2. 데이터 조회 및 출력:
    • 데이터베이스에서 조회한 결과를 서블릿에서 처리하고 JSP에서 테이블 형식으로 출력.
  3. RESTful API와 연동:
    • 클라이언트에서 서블릿으로 JSON 데이터를 보내고 처리한 결과를 JSP 또는 JSON 형식으로 응답.

마치며

서블릿은 자바 기반 웹 애플리케이션에서 중요한 역할을 합니다. GET과 POST 요청을 통해 클라이언트와 데이터를 주고받고, JSP를 활용해 동적 콘텐츠를 생성하는 방법을 이해하면 더욱 효율적인 웹 개발이 가능합니다. 이를 실습하며 능력을 키워보세요!

 

반응형

'개발 부트캠프 > 백엔드' 카테고리의 다른 글

[Java] HTTP 요청 처리하기  (0) 2025.01.16
[Java] SQL Injection  (1) 2025.01.10
[Java] 계층형 아키텍처 패턴 (Layered Architecture Pattern)  (0) 2025.01.07
[Java] MVC 패턴  (1) 2025.01.07
[Java] SOLID 원칙  (0) 2025.01.07

+ Recent posts