2026. 6. 1. 14:49ㆍ2🥐 제과점 프로그램
06. action.jsp 작성하기
판매등록 데이터를 실제 DB에 저장하기
앞에서 reg.jsp를 작성하면서 사용자가 판매정보를 입력할 수 있는 화면을 만들었습니다.
하지만 reg.jsp는 입력 화면일 뿐입니다.
사용자가 입력한 값을 실제 데이터베이스에 저장하려면 별도의 처리 페이지가 필요합니다.
그 역할을 하는 파일이:
action.jsp
입니다.
1. action.jsp가 필요한 이유
현재 프로젝트의 흐름은 다음과 같습니다.
reg.jsp
→ 판매정보 입력
action.jsp
→ 입력받은 값을 DB에 저장
즉 reg.jsp와 action.jsp는 역할이 다릅니다.
reg.jsp → 입력 화면
action.jsp → DB 처리 화면
으로 나누어 생각하면 됩니다.
2. action.jsp가 하는 일
현재 문제에서 action.jsp는 다음 역할을 합니다.
1. reg.jsp에서 전달된 값 받기
2. INSERT SQL문 작성하기
3. tbl_sale 테이블에 저장하기
4. 저장 완료 메시지 출력하기
5. main.jsp로 이동하기
즉:
사용자가 입력한 판매정보를
실제로 DB에 저장하는 페이지
입니다.
3. action.jsp 전체 코드
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import = "java.sql.*" %>
<%@ page import = "DBPKG.Util" %>
<%
request.setCharacterEncoding("UTF-8");
Connection conn = Util.getConnection();
Statement stmt = conn.createStatement();
String pk_sale = request.getParameter("pk_sale");
String deal_date = request.getParameter("deal_date");
String deal_count = request.getParameter("deal_count");
String fk_bakery = request.getParameter("fk_bakery");
String fk_bread = request.getParameter("fk_bread");
String sql =
" INSERT INTO tbl_sale VALUES('" + pk_sale + "'" +
" , '" + deal_date + "'" +
" , " + deal_count +
" , '" + fk_bakery + "'" +
" , '" + fk_bread + "')";
stmt.executeUpdate(sql);
stmt.close();
conn.close();
%>
<script>
alert("판매등록이 정상적으로 되었습니다.");
window.location.href = "main.jsp";
</script>
4. action.jsp는 화면보다 DB 처리가 중심입니다
앞에서 만든:
index.jsp
main.jsp
reg.jsp
는 화면 출력이 중심이었습니다.
하지만 action.jsp는 조금 다릅니다.
현재 페이지는 사용자에게 보여주는 화면보다는:
DB 작업 처리
가 중심인 파일입니다.
즉:
데이터 저장 전용 페이지
라고 생각하면 됩니다.
5. UTF-8 설정하기
request.setCharacterEncoding("UTF-8");
현재 프로젝트는 한글 데이터를 사용합니다.
예를 들어 제과점명이나 제과명에는:
정심당
셋쥬루
대보름빵
찹쌀도너츠
같은 한글 데이터가 들어갑니다.
따라서 입력값을 받을 때 한글이 깨지지 않도록 UTF-8 설정을 해줍니다.
6. DB 연결하기
Connection conn = Util.getConnection();
Statement stmt = conn.createStatement();
현재 페이지에서는 INSERT SQL문을 실행해야 합니다.
따라서 Oracle DB 연결이 필요합니다.
코드역할
| Connection conn | DB 연결 |
| Statement stmt | SQL 실행 준비 |
7. request.getParameter() 사용하는 이유
현재 사용자가 입력한 값은 reg.jsp에서 넘어옵니다.
즉 action.jsp는 사용자가 입력한 데이터를 직접 가지고 있는 것이 아니라,
form에서 전달된 값을 받아와야 합니다.
그래서 사용하는 코드가:
request.getParameter()
입니다.
8. 전달받은 값 저장하기
판매번호 받기
String pk_sale = request.getParameter("pk_sale");
reg.jsp에서 자동 생성된 판매번호를 받습니다.
예:
00016
판매일자 받기
String deal_date = request.getParameter("deal_date");
reg.jsp에서 자동 생성된 판매일자를 받습니다.
예:
20250601
판매수량 받기
String deal_count = request.getParameter("deal_count");
사용자가 입력한 판매수량을 받습니다.
예:
10
제과점 코드 받기
String fk_bakery = request.getParameter("fk_bakery");
사용자가 선택한 제과점 코드를 받습니다.
화면에는 정심당처럼 보였지만 실제로 넘어오는 값은:
A0001
입니다.
제과 코드 받기
String fk_bread = request.getParameter("fk_bread");
사용자가 선택한 제과 코드를 받습니다.
화면에는 대보름빵처럼 보였지만 실제로 넘어오는 값은:
B0001
입니다.
9. request.getParameter()가 중요한 이유
현재 프로젝트에서는:
reg.jsp → action.jsp
로 데이터가 이동합니다.
즉 action.jsp는 화면에서 입력된 값을 받아야 합니다.
이때 reg.jsp의 input, select 태그에 작성한 name 값과
request.getParameter() 안의 이름이 같아야 합니다.
예를 들어:
<INPUT type="text" name="pk_sale">
이면 action.jsp에서는:
request.getParameter("pk_sale")
로 받아야 합니다.
10. INSERT SQL문 작성하기
이번 문제의 핵심입니다.
현재 사용자가 입력한 판매정보를:
tbl_sale
테이블에 저장해야 합니다.
그래서 INSERT SQL문을 작성합니다.
String sql =
" INSERT INTO tbl_sale VALUES('" + pk_sale + "'" +
" , '" + deal_date + "'" +
" , " + deal_count +
" , '" + fk_bakery + "'" +
" , '" + fk_bread + "')";
11. 현재 SQL문이 하는 일
현재 SQL문은 사용자가 입력한 값을 tbl_sale 테이블에 저장합니다.
예를 들어 사용자가 다음 값을 입력했다고 가정합니다.
판매번호: 00016
판매일자: 20250601
판매수량: 10
제과점: A0001
제과: B0001
그러면 실제 SQL은 다음과 같이 완성됩니다.
INSERT INTO tbl_sale
VALUES('00016', '20250601', 10, 'A0001', 'B0001')
즉:
판매정보 1건이 tbl_sale 테이블에 추가
됩니다.
12. 문자열 연결(+) 사용하는 이유
현재 SQL문 안에는 사용자마다 달라지는 값이 들어가야 합니다.
예를 들어:
pk_sale
deal_date
deal_count
fk_bakery
fk_bread
값은 등록할 때마다 달라집니다.
그래서 문자열 연결 연산자인:
+
를 사용해서 SQL문을 완성합니다.
13. 판매수량에는 따옴표를 붙이지 않는 이유
SQL문을 보면 deal_count에는 작은따옴표가 없습니다.
" , " + deal_count +
왜냐하면 deal_count는 숫자 컬럼이기 때문입니다.
tbl_sale 테이블에서 판매수량은:
deal_count NUMBER(10)
로 만들었습니다.
따라서 숫자값은 따옴표 없이 넣습니다.
반면 pk_sale, deal_date, fk_bakery, fk_bread는 문자 또는 날짜 형태로 처리하기 때문에 따옴표를 붙여 작성합니다.
14. SQL 실행하기
stmt.executeUpdate(sql);
현재 SQL문은 INSERT문입니다.
즉 데이터를 조회하는 것이 아니라 저장하는 작업입니다.
그래서:
executeUpdate()
를 사용합니다.
메서드사용
| executeQuery() | SELECT 조회 |
| executeUpdate() | INSERT / UPDATE / DELETE |
이 차이는 꼭 기억하면 좋습니다.
15. DB 연결 닫기
stmt.close();
conn.close();
DB 사용이 끝났기 때문에 연결을 닫아줍니다.
현재 프로젝트 규모는 작지만,
DB 연결을 사용한 뒤 닫아주는 습관은 중요합니다.
16. 저장 완료 메시지 출력하기
<script>
alert("판매등록이 정상적으로 되었습니다.");
window.location.href = "main.jsp";
</script>
현재 DB 저장이 끝나면 사용자에게 완료 메시지를 보여줘야 합니다.
그래서:
alert()
를 사용합니다.
17. 저장 후 페이지 이동하기
window.location.href = "main.jsp";
저장 완료 후 메인 화면으로 이동합니다.
즉 흐름은 다음과 같습니다.
사용자 입력
→ 등록 버튼 클릭
→ action.jsp 실행
→ DB 저장
→ 완료 메시지 출력
→ main.jsp 이동
18. 현재까지의 프로젝트 흐름
db.sql
→ DB 생성
Util.java
→ Oracle 연결
index.jsp
→ 전체 화면 틀
style.css
→ 디자인 적용
main.jsp
→ 프로그램 설명 화면
reg.jsp
→ 사용자 입력 화면
action.jsp
→ 실제 DB 저장 처리
19. 핵심 정리
현재 action.jsp에서 가장 중요한 것은:
사용자 입력값을 받아서
실제 DB에 INSERT 하는 흐름
입니다.
즉 현재 프로젝트 구조는:
reg.jsp
→ 사용자 입력
action.jsp
→ DB 저장 처리
로 역할이 분리되어 있다는 점을 이해하는 것이 중요합니다.
'2🥐 제과점 프로그램' 카테고리의 다른 글
| 🥐8. list.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 |