🥐7. action.jsp 작성하기

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

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