Notice
Recent Posts
Recent Comments
Link
«   2026/06   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

정보처리기사 실기

🗓️7. action.jsp 작성하기 본문

🗓️ 일정관리 프로그램

🗓️7. action.jsp 작성하기

윤서입니다롱 2026. 5. 26. 12:23

입력받은 데이터를 실제 DB에 저장하기

앞에서 reg.jsp를 작성하면서
사용자가 일정 데이터를 입력할 수 있는 화면을 만들었습니다.

하지만 현재 상태에서는:

입력만 가능
DB 저장은 안 됨

상태입니다.

즉 사용자가 등록 버튼을 눌렀을 때:

일정번호
일정일자
회원번호
일정메모

를 실제 Oracle DB의:

tbl_schedule

테이블에 저장해야 합니다.

그 역할을 하는 파일이 바로:

action.jsp

입니다.


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

현재 프로젝트 흐름은 다음과 같습니다.

reg.jsp
→ 사용자 입력
→ 등록 버튼 클릭
→ action.jsp 이동
→ DB 저장

즉:

reg.jsp → 입력 화면
action.jsp → DB 처리 화면

으로 역할을 나누는 것입니다.


2. action.jsp가 하는 일

현재 문제에서 action.jsp는 다음 역할을 합니다.

1. reg.jsp에서 전달된 값 받기
2. INSERT SQL문 작성하기
3. tbl_schedule 테이블에 저장하기
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_schedule	= request.getParameter("pk_schedule");
String fk_member 	= request.getParameter("fk_member");
String do_memo 		= request.getParameter("do_memo");
String do_date 		= request.getParameter("do_date");

String sql = 
" INSERT 	INTO	 tbl_schedule 	VALUES('"	+ pk_schedule	+	"'"+
"										 , '"	+ do_date		+	"'"+
"										 , '"	+ do_memo		+	"'"+
"										 , '"	+ fk_member		+	"')";

ResultSet rs = stmt.executeQuery(sql);

rs.close();
conn.close();
stmt.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 설정이 없으면
한글이 깨질 수 있습니다.

그래서 입력값을 받기 전에 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에서는
사용자가 입력한 데이터를 받아야 합니다.

그래서 사용하는 코드가:

request.getParameter()

입니다.


8. 전달받은 값 저장하기

일정번호 받기

String pk_schedule = request.getParameter("pk_schedule");

reg.jsp에서 전달된 일정번호를 받습니다.

현재 일정번호는 자동발생 값입니다.


회원번호 받기

String fk_member = request.getParameter("fk_member");

사용자가 입력한 회원번호를 받습니다.

예:

M0001

일정메모 받기

String do_memo = request.getParameter("do_memo");

사용자가 입력한 일정 내용을 받습니다.

예:

탐관오리 찾기

일정일자 받기

String do_date = request.getParameter("do_date");

사용자가 입력한 날짜를 받습니다.

예:

20250101

9. 현재 request.getParameter()가 중요한 이유

현재 프로젝트에서:

reg.jsp → action.jsp

로 데이터가 이동합니다.

즉 action.jsp는 사용자가 입력한 값을 직접 알고 있는 것이 아니라:

form에서 전달된 값

을 받아야 합니다.

그래서:

request.getParameter()

를 사용합니다.


10. INSERT SQL문 작성하기

이번 문제의 핵심입니다.

현재 사용자가 입력한 데이터를:

tbl_schedule

테이블에 저장해야 합니다.

그래서 INSERT SQL문을 작성합니다.

String sql =
" INSERT INTO tbl_schedule VALUES('" + pk_schedule + "'"+
"                                 , '" + do_date + "'"+
"                                 , '" + do_memo + "'"+
"                                 , '" + fk_member + "')";

11. 현재 SQL문이 하는 일

현재 코드의 의미는 다음과 같습니다.

사용자가 입력한 값들을
tbl_schedule 테이블에 INSERT

입니다.

즉 예를 들어:

5
20250501
소풍가기
M0001

를 입력했다면 실제 SQL은 다음처럼 동작합니다.

INSERT INTO tbl_schedule
VALUES('5','20250501','소풍가기','M0001')

12. 문자열 연결(+) 사용하는 이유

현재 SQL문 안에는 변수값이 들어가야 합니다.

예를 들어:

pk_schedule
do_date
do_memo
fk_member

값이 사용자마다 달라집니다.

그래서 문자열 연결 연산자인:

+

를 사용해서 SQL문을 완성합니다.


13. SQL 실행하기

ResultSet rs = stmt.executeQuery(sql);

현재 작성한 INSERT SQL문을 실행합니다.

즉 실제 Oracle DB에 데이터가 저장됩니다.


14. 여기서 주의할 점

현재 코드는 실습에서는 동작할 수 있지만,
보통 INSERT/UPDATE/DELETE는:

executeUpdate()

를 사용하는 것이 더 일반적입니다.

즉 실제로는 다음 방식이 더 자연스럽습니다.

stmt.executeUpdate(sql);

왜냐하면:

메서드사용

executeQuery() SELECT 조회
executeUpdate() INSERT / UPDATE / DELETE

이기 때문입니다.

시험 실습에서는 제공 코드 그대로 사용하는 경우도 많지만,
개념적으로는 차이를 알고 있는 것이 좋습니다.


15. DB 연결 닫기

rs.close();
conn.close();
stmt.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 저장 처리

로 역할이 분리되어 있다는 점을 이해하는 것이 중요합니다.