JSP / Servlet 실습

2025. 9. 5. 20:10·JAVA/Java 실습

JSP / Servlet을 활용해 상품 페이지 만들기

2개의 Java 파일, 1개의 JSP로 구성하여 서버 전송 및 응답과정을 확인 , 원하는 결과값을 도출해 내는 과정을 거치고자 함

코드는 작성된 예제를 기반으로 일부 수정 및 그대로 인용하였음

 

📁 소스 구조

project-root/
├─ src/main/java/
│  ├─ Product.java
│  └─ ProductServlet.java
├─ src/main/webapp/
│  └─ product-list.jsp
└─ pom.xml

 

 

💻 Product.java

public class Product {
    private String name;
    private int price;
    private int quantity;
    public Product(String name, int price, int quantity) {
        this.name = name; this.price = price; this.quantity = quantity;
    }
    public String getName() { return name; }
    public int getPrice() { return price; }
    public int getQuantity() { return quantity; }
}
  • 입력 받아야 하는 각 변수들의 값을 받고, 저장하는 과정이 나타나있는 java 파일
  • Product 라는 객체를 생성할 경우 반드시 이름, 가격, 수량을 받아 초기화 하는 것
  • GET을 통해 값을 읽어오도록 요청

 

💻 ProductServlet.java

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;
import java.util.List;

@WebServlet("/products")
public class ProductServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {

        String userName = "하마";
        List<Product> products = List.of(
                new Product("삼겹살", 28000, 3),
                new Product("콜드브루 원액 500ml", 12000, 5),
                new Product("텀블러 1L", 18000, 4),
                new Product("머그컵", 9500, 6)
        );

        req.setAttribute("userName", userName);
        req.setAttribute("products", products);

        RequestDispatcher rd = req.getRequestDispatcher("product-list.jsp");
        rd.forward(req, resp);
    }
}
  • @WebServlet("/products")로 인하여 브라우저에서 /products 요청이 들어왔을 경우 서블릿이 실행되도록 함
  • Product에 여러 객체들을 리스트로 담아냄 (목록 데이터 준비)
  • req.setAttribute 로 JSP에 데이터를 전달하기 위해 request 영역에 저장
  • RequestDispatcher 선언으로 jsp 파일로 제어를 넘기는 과정
  • JSP가 실행되면서 앞서 담았던 내용들을 사용할 수 있게 해줌

 

🖥️ product-list.jsp

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!doctype html>
<html lang="ko">
<head><meta charset="utf-8"><title>상품 목록</title></head>
<body>
  <h2><c:out value="${userName}"/>님, 반갑습니다!</h2>
  <h3>상품 목록</h3>
  <ul>
    <c:forEach var="p" items="${products}">
      <li>
        상품명: <c:out value="${p.name}"/> /
        가격: <c:out value="${p.price}"/>원 /
        수량: <c:out value="${p.quantity}"/>개
      </li>
    </c:forEach>
  </ul>
</body>
</html>
  • 서블릿에서 전달한 값들을 화면에 리스트 형태로 보여주는 역할을 하고 있고,
    <c:forEach>는 Products 의 리스트를 순회하면서 각각의 Product 객체를 화면에 뿌려주는 부분 

 

❗️의존성  추가

<dependencies>
  <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>4.0.1</version>
    <scope>provided</scope>
  </dependency>
  <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
  </dependency>
</dependencies>

 

 

🌠 실행 결과

 

📋 정리

  • 웹의 동작원리를 이해할 수 있었음
    • 요청 → 처리 → 응답 과정에 대한 전반적인 흐름 이해
  • 사이드 렌더링 : 데이터를 서버에서 가공하여 HTML로 완성해 클라이언트에게 내보내려는 전통적인 웹 방식의 이해

'JAVA > Java 실습' 카테고리의 다른 글

[JAVA] 계산기 과제 개념 추가 정리  (0) 2025.09.16
점메추 SPA 에디션  (0) 2025.09.10
MVC 기반 점심 메뉴 추천기  (0) 2025.09.10
JSP 자기소개 버전 만들기  (0) 2025.09.09
나를 소개합니다  (0) 2025.09.08
'JAVA/Java 실습' 카테고리의 다른 글
  • 점메추 SPA 에디션
  • MVC 기반 점심 메뉴 추천기
  • JSP 자기소개 버전 만들기
  • 나를 소개합니다
stark77
stark77
하마의 IT 자기개발 이모저모, 백엔드 개발자로 거듭나기
  • stark77
    하마의 개발자 성장일기
    stark77
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 컴퓨터구조와 운영체제
        • 컴퓨터구조
        • 운영체제
      • SQL 기초
      • Spring
        • 백엔드 기초
        • Spring 실습
      • JAVA
        • Java 실습
      • HTML&CSS
        • HTML&CSS 실습
      • Git&GitHub
        • Git&GitHub 실습
      • 내배캠 끄적끄적
        • Today I Learned
      • 유용한 툴 및 사이트 정리
      • 취미
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    경합조건과 교착상태
    Spring
    Github
    HTML&CSS
    실시간 데이터 처리
    String.format
    웹소켓
    thymleaf
    Stomp
    for문
    네트워크 기초
    다형성
    git
    jsp
    WebSocket
    Java 문법기초
    MVC
    SpringSecurity
    Spriingboot
    백엔드 기초
    Til
    객체지향
    JPA
    백엔드 기초다지기
    프로세스와 쓰레드
    algorithm
    RestTemplate
    객체지향프로그래밍
    BEAN
    java
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
stark77
JSP / Servlet 실습
상단으로

티스토리툴바