🥐8. list.jsp 작성하기

2026. 6. 1. 14:552🥐 제과점 프로그램

list.jsp 작성하기

제과현황 조회 화면 만들기

앞에서 reg.jsp와 action.jsp를 작성하면서 판매정보를 등록하는 기능을 만들었습니다.

이번 단계에서는 메뉴 중 하나인:

제과현황

화면을 만들어보겠습니다.

제과현황은 DB에 저장된 제과 정보를 조회해서 화면에 표로 보여주는 페이지입니다.


1. 이번 문제에서 list.jsp가 필요한 이유

문제에서 제과현황 화면에는 다음 항목이 출력되어야 합니다.

제과코드
제과명
가격

이 데이터는 모두:

tbl_bread

테이블 안에 있습니다.

따라서 이 화면은 JOIN이 필요하지 않습니다.

즉:

tbl_bread 테이블 하나만 조회

하면 됩니다.

그 역할을 하는 파일이:

list.jsp

입니다.


2. list.jsp가 해야 하는 일

이번 문제에서 list.jsp는 다음 역할을 합니다.

1. tbl_bread 테이블 조회
2. 제과코드 출력
3. 제과명 출력
4. 가격 출력
5. 가격을 1,000원 형식으로 출력
6. 표 형태로 화면에 보여주기

즉 list.jsp는:

DB 데이터를 조회해서 화면에 출력하는 페이지

입니다.


3. list.jsp 전체 코드

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import = "java.sql.*" %>
<%@ page import = "DBPKG.Util" %>

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>제과현황</title>
	<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<%
request.setCharacterEncoding("UTF-8");

Connection conn = Util.getConnection();
Statement stmt = conn.createStatement();

String sql = " SELECT pk_bread AS 제과코드 " +
             "      , name AS 제과명 " +
             "      , TO_CHAR(TO_NUMBER(price), '999,999') || '원' AS 가격 " +
             " FROM tbl_bread " +
             " ORDER BY pk_bread ";

ResultSet rs = stmt.executeQuery(sql);
%>

<H4>제과현황</H4>

<TABLE border="1">
	<TR>
		<TH width="100px">제과코드</TH>
		<TH width="100px">제과명</TH>
		<TH width="100px">가격</TH>
	</TR>

<% while(rs.next()){ %>
	<TR>
		<TD align="center"><%=rs.getString("제과코드") %></TD>
		<TD align="center"><%=rs.getString("제과명") %></TD>
		<TD align="right"><%=rs.getString("가격") %></TD>
	</TR>
<% } %>

</TABLE>

<%
rs.close();
stmt.close();
conn.close();
%>
</body>
</html>

4. DB를 사용하는 페이지이므로 import가 필요합니다

list.jsp는 DB에 저장된 제과 데이터를 조회해야 합니다.

그래서 아래 코드가 필요합니다.

<%@ page import = "java.sql.*" %>
<%@ page import = "DBPKG.Util" %>

각 코드의 역할은 다음과 같습니다.

코드역할

java.sql.* DB 연결, SQL 실행 기능 사용
DBPKG.Util 우리가 만든 DB 연결 클래스 사용

5. 현재 페이지는 조회 페이지입니다

앞에서 만든 action.jsp는 데이터를 저장하는 페이지였습니다.

하지만 현재 list.jsp는 데이터를 입력하거나 저장하지 않습니다.

현재 페이지는:

tbl_bread에 저장된 데이터를 조회해서
사용자에게 보여주는 페이지

입니다.


6. DB 연결하기

Connection conn = Util.getConnection();
Statement stmt = conn.createStatement();

제과 데이터를 가져오기 위해 Oracle DB에 연결합니다.

코드의미

Connection conn DB 연결
Statement stmt SQL 실행 준비

7. 이번 문제에서 필요한 SQL 판단하기

제과현황 화면에서 필요한 데이터는 다음과 같습니다.

제과코드
제과명
가격

이 데이터들은 모두 tbl_bread 테이블에 있습니다.

따라서 사용하는 테이블은 하나입니다.

tbl_bread

즉 JOIN은 필요하지 않습니다.


8. SELECT 문 작성하기

SELECT pk_bread AS 제과코드,
       name AS 제과명,
       TO_CHAR(TO_NUMBER(price), '999,999') || '원' AS 가격
FROM tbl_bread
ORDER BY pk_bread

이 SQL문은:

tbl_bread 테이블에서
제과코드, 제과명, 가격을 조회

하는 코드입니다.


9. AS 별칭 사용하는 이유

pk_bread AS 제과코드
name AS 제과명

AS는 컬럼 이름을 보기 쉽게 바꾸는 역할입니다.

원래 DB 컬럼명은:

pk_bread
name
price

입니다.

하지만 화면에서는:

제과코드
제과명
가격

으로 보여주는 것이 더 자연스럽습니다.

그래서 AS를 사용합니다.

그리고 JSP에서도 이 별칭을 기준으로 값을 꺼냅니다.

rs.getString("제과코드")
rs.getString("제과명")
rs.getString("가격")

즉 SQL의 별칭과 JSP의 getString() 이름이 같아야 합니다.


10. 가격을 보기 좋게 출력하기

TO_CHAR(TO_NUMBER(price), '999,999') || '원' AS 가격

이번 문제에서는 가격을 그냥 1000처럼 출력하는 것이 아니라:

1,000원
1,500원
2,000원

처럼 보기 좋게 출력해야 합니다.

그래서 TO_CHAR()를 사용합니다.


TO_NUMBER(price)를 사용하는 이유

현재 tbl_bread에서 price가 문자형으로 만들어진 경우가 있습니다.

예를 들어:

'1000'

처럼 저장되어 있다면 숫자 포맷을 적용하기 어렵습니다.

그래서 먼저:

TO_NUMBER(price)

로 숫자 형태로 바꿔줍니다.


TO_CHAR()를 사용하는 이유

TO_CHAR(TO_NUMBER(price), '999,999')

숫자를 화면에 보여줄 문자 형식으로 바꿉니다.

이때 999,999 형식을 사용하면 천 단위 콤마가 붙습니다.


|| '원'을 붙이는 이유

|| '원'

Oracle에서 ||는 문자열을 이어 붙이는 연산자입니다.

즉 가격 뒤에 원이라는 글자를 붙여줍니다.

결과적으로:

1,000원

처럼 출력됩니다.


11. ORDER BY를 사용하는 이유

ORDER BY pk_bread

조회 결과를 제과코드 기준으로 정렬합니다.

문제 화면에서도 보통 코드 순서대로 출력하므로
ORDER BY를 사용해 정렬해줍니다.


12. SQL 실행하기

ResultSet rs = stmt.executeQuery(sql);

현재 SQL은 SELECT 조회문입니다.

따라서:

executeQuery()

를 사용합니다.

조회 결과는 ResultSet에 저장됩니다.


13. ResultSet이 중요한 이유

SQL 조회 결과는 여러 줄로 나옵니다.

예를 들어:

B0001 대보름빵 1,000원
B0002 자라빵 1,500원
B0003 코끼리빵 2,000원

이 결과를 저장하는 객체가:

ResultSet

입니다.

즉 ResultSet은:

조회 결과 저장 공간

이라고 생각하면 됩니다.


14. table 태그로 화면 만들기

<TABLE border="1">

조회 결과는 표 형태로 보여줘야 합니다.

그래서 TABLE 태그를 사용합니다.


15. TH 태그 : 제목칸 만들기

<TH width="100px">제과코드</TH>
<TH width="100px">제과명</TH>
<TH width="100px">가격</TH>

TH는 표 제목칸입니다.

현재 문제에서 요구한 출력 항목인:

제과코드
제과명
가격

을 제목으로 작성합니다.


16. while(rs.next())로 여러 줄 출력하기

<% while(rs.next()){ %>

제과 데이터는 여러 개입니다.

따라서 한 줄만 출력하면 안 됩니다.

while(rs.next())는:

조회 결과가 있는 동안 반복

하라는 의미입니다.

즉 제과 데이터가 7개라면 7번 반복해서 출력합니다.


17. ResultSet에서 값 꺼내기

<%=rs.getString("제과코드") %>
<%=rs.getString("제과명") %>
<%=rs.getString("가격") %>

이 코드는 현재 행의 값을 화면에 출력합니다.

여기서 사용하는 이름은 SQL에서 지정한 별칭과 같아야 합니다.

예를 들어 SQL에서:

AS 제과코드

라고 했기 때문에 JSP에서도:

rs.getString("제과코드")

라고 작성합니다.


18. align으로 표 정렬하기

<TD align="center">
<TD align="right">

표 안의 글자 정렬을 지정합니다.

현재 화면에서는:

제과코드 → 가운데 정렬
제과명 → 가운데 정렬
가격 → 오른쪽 정렬

로 출력합니다.

가격은 숫자이기 때문에 오른쪽 정렬하면 더 보기 좋습니다.


19. DB 연결 닫기

rs.close();
stmt.close();
conn.close();

조회가 끝났으므로 DB 연결을 닫아줍니다.

DB 관련 객체는 사용 후 닫아주는 습관을 들이는 것이 좋습니다.


20. 현재 페이지 실행 흐름

list.jsp는 다음 순서로 동작합니다.

list.jsp 실행
↓
Oracle DB 연결
↓
tbl_bread 조회
↓
조회 결과를 ResultSet에 저장
↓
while 반복문으로 한 줄씩 출력
↓
제과현황 화면 완성

21. 현재까지 완성된 기능

main.jsp
→ 프로그램 설명 화면

reg.jsp
→ 판매등록 입력 화면

action.jsp
→ DB 저장 처리

list.jsp
→ 제과현황 조회 화면

즉 이제:

입력 + 저장 + 단순 조회

기능까지 구현된 상태입니다.


22. 핵심 정리

현재 list.jsp에서 가장 중요한 것은:

tbl_bread 테이블 하나만 조회해서
제과현황을 출력하는 흐름

입니다.

정리하면:

SELECT 실행
→ ResultSet 저장
→ while 반복
→ table 출력

구조를 이해하는 것이 핵심입니다.

'2🥐 제과점 프로그램' 카테고리의 다른 글

🥐7. action.jsp 작성하기  (0) 2026.06.01
🥐6. reg.jsp 작성하기  (0) 2026.06.01
🥐5. main.jsp 작성하기  (0) 2026.06.01
🥐4. style.css 작성하기  (0) 2026.06.01
🥐3. index.jsp 작성하기  (0) 2026.06.01