서블릿(Servlet)
**서블릿(Servlet)**은 자바 기반 웹 애플리케이션에서 클라이언트의 요청을 처리하고 동적 콘텐츠를 생성하는 서버 측 컴포넌트입니다. HTTP 프로토콜을 기반으로 하며, Java Servlet API를 통해 동작합니다. 주로 HTML, JSON, XML 등의 응답을 생성하여 클라이언트에 반환합니다.
이 글에서는 서블릿의 개념과 함께 클라이언트에서 데이터를 보내고 받는 방법, 그리고 서블릿에서 JSP를 통해 데이터를 반환하는 방법을 예제와 함께 설명합니다.
서블릿의 주요 기능
- 클라이언트 요청 처리:
- GET, POST, PUT 등의 HTTP 요청을 처리합니다.
- 데이터 처리 및 로직 수행:
- 서버에서 필요한 비즈니스 로직을 수행하고 데이터베이스와 상호작용합니다.
- 응답 생성:
- 클라이언트가 이해할 수 있는 형식(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의 활용 예시
- 로그인 시스템:
- 클라이언트가 로그인 폼에서 입력한 데이터를 서블릿으로 보내 검증 후 JSP로 결과를 반환.
- 데이터 조회 및 출력:
- 데이터베이스에서 조회한 결과를 서블릿에서 처리하고 JSP에서 테이블 형식으로 출력.
- 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 |