개발인생/Backend

[JSP] vs Servlet

forri 2025. 2. 17. 18:57

✅ 1. JSP와 Servlet이 뭔가요?

JSP와 Servlet은 둘 다 웹 서버에서 실행되는 Java 프로그램입니다.
하지만 역할이 조금 다릅니다.

개념 설명 사용 목적
Servlet Java 코드로만 작성된 웹 페이지 처리 클래스 요청 처리
(예: 로그인, 데이터 처리)
JSP HTML에 Java 코드를 포함할 수 있는 웹 페이지 HTML 렌더링
(예: 사용자 화면 표시)

 

  • Servlet: 사용자의 요청을 처리하는 백엔드 로직 담당
  • JSP: 사용자에게 보여줄 웹 페이지를 HTML과 함께 작성

 


✅ 2. JSP와 Servlet이 어떻게 동작하나요?

웹에서 사용자가 요청을 하면, JSP와 Servlet이 협력하여 웹 페이지를 만들어줍니다.

📌 요청 & 응답 흐름

1️⃣ 사용자가 브라우저에서 http://localhost:8080/login 요청
2️⃣ Servlet이 요청을 받아서 로그인 처리 (DB 조회 등)
3️⃣ 결과를 JSP로 전달
4️⃣ JSP가 HTML 화면을 만들어서 브라우저에 응답

[사용자] → 요청 → [Servlet] (로그인 검증) → [JSP] (화면 생성) → 응답 → [사용자]

 

 


✅ 3. Servlet 예제 (로그인 기능 만들기)

Servlet은 doGet() 또는 doPost() 메서드를 사용하여 요청을 처리합니다.

📌 Servlet 코드 예제

LoginServlet.java

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

@WebServlet("/login")
public class LoginServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String username = request.getParameter("username");
        String password = request.getParameter("password");

        if ("admin".equals(username) && "1234".equals(password)) {
            request.setAttribute("message", "로그인 성공!");
            request.getRequestDispatcher("/welcome.jsp").forward(request, response);
        } else {
            request.setAttribute("message", "로그인 실패! 다시 시도하세요.");
            request.getRequestDispatcher("/login.jsp").forward(request, response);
        }
    }
}

 

✅ @WebServlet("/login") → /login URL을 받는 서블릿
✅ request.getParameter("username") → 입력된 아이디 가져오기
✅ request.getRequestDispatcher("/welcome.jsp") → JSP로 결과 전달

 


✅ 4. JSP 예제 (로그인 결과 화면)

JSP는 HTML과 함께 Java 코드를 사용할 수 있습니다.

📌 JSP 코드 예제

welcome.jsp

<%@ page contentType="text/html; charset=UTF-8" %>
<html>
<head>
    <title>로그인 결과</title>
</head>
<body>
    <h2><%= request.getAttribute("message") %></h2>
    <a href="login.jsp">다시 로그인</a>
</body>
</html>

 

✅ <%= request.getAttribute("message") %> → Servlet에서 전달받은 메시지 출력
✅ HTML과 Java를 혼합하여 사용 가능

 


✅ 5. JSP와 Servlet을 같이 쓰는 이유는?

Q. JSP만 쓰면 안 되나요?

  • JSP는 HTML을 다루는 데 최적화되어 있지만, 데이터 처리(로그인, DB 연결)는 어려움
  • Servlet은 Java 코드로만 작성되므로 HTML을 만들기가 불편함

 


✅ 6. JSP & Servlet 실행 방법

📌 1. Tomcat 서버 설치

1️⃣ Apache Tomcat 10 다운로드

2️⃣ 이클립스에서 Tomcat 추가 (Servers 탭 → New → Server → Tomcat 선택)
3️⃣ 프로젝트 실행 (Run on Server)

 

Apache Tomcat® - Apache Tomcat 10 Software Downloads

Welcome to the Apache Tomcat® 10.x software download page. This page provides download links for obtaining the latest version of Tomcat 10.1.x software, as well as links to the archives of older releases. Unsure which version you need? Specification versi

tomcat.apache.org

 

📌 2. URL로 실행

  • http://localhost:8080/login.jsp → 로그인 페이지
  • http://localhost:8080/login → LoginServlet 호출

 


🚀 JSP & Servlet 정리

항목 JSP Servlet
역할 HTML 화면 출력 요청 처리 & 데이터 처리
코드 형태 Java + HTML 혼합 Java 코드만 사용
실행 위치 WEB-INF/views/에 위치 src/main/java에서 실행
주로 하는 일 웹페이지 렌더링 데이터 처리 & 로직 실행

 

✅ JSP = 화면 담당
✅ Servlet = 로직 담당
✅ 둘을 같이 사용하면 강력한 웹 애플리케이션을 만들 수 있음

 

 


 

학원 다닐 때 jsp랑 Servlet 개념만 배우고 바로 프로젝트 진행을 했다.

그야말로 야생에 던져졌는데, 매일매일이 때려치고 도망가고 싶은 심정이었다. 

하지만 어찌저찌 이겨내고 눈물의 jsp 프로젝트 susuma를 만들어냈다.

 

이제보니 jsp는 로직만 이해하면 참 쉽다(그게 어려운 거지만...)