2026. 6. 1. 14:55ㆍ2🥐 제과점 프로그램
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 |