[๊ตฌ๋””์•„์นด๋ฐ๋ฏธ IT๊ตญ๋น„์ง€์›] ์ง€๋‚œ ์‹œ๊ฐ„์— ์ด์–ด์„œ ๋‹ค์ด์–ด๋ฆฌ ํ”„๋กœ์ ํŠธ๋ฅผ ์ด์–ด๊ฐ”๋‹ค. ์ด๋ฒˆ์—๋Š” ์ž…๋ ฅ(insert) ๊ธฐ๋Šฅ๊ณผ ์‚ญ์ œ(delete) ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ–ˆ๋‹ค.


๐Ÿ’ก insert ๊ธฐ๋Šฅ ์ถ”๊ฐ€

๋จผ์ € ์ƒˆ๋กœ์šด ๊ธ€ ์ž‘์„ฑ์ด ๊ฐ€๋Šฅํ•˜๋„๋ก noticeList.jsp ํŽ˜์ด์ง€์— ๊ณต์ง€์ž…๋ ฅ ํผ์œผ๋กœ ์—ฐ๊ฒฐ๋˜๋Š” aํƒœ๊ทธ๋ฅผ ์ถ”๊ฐ€ํ–ˆ๋‹ค.

๐Ÿ“Œ noitceList.jsp

<!-- ๊ณต์ง€์ž…๋ ฅ ํผ ์ถ”๊ฐ€ -->
<a href="./insertNoticeForm.jsp">๊ณต์ง€์ž…๋ ฅ</a>


๊ณต์ง€์ž…๋ ฅ์„ ํด๋ฆญํ•˜๋ฉด insertNoticeForm.jsp ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•œ๋‹ค.

๐Ÿ“Œ insertNoticeForm.jsp

๐Ÿ“ ์ž‘์„ฑ

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>insertNoticeForm.jsp</title>
</head>
<body>
	<div><!-- ๋ฉ”์ธ๋ฉ”๋‰ด -->
		<a href="./home.jsp">ํ™ˆ์œผ๋กœ</a>
		<a href="./noticeList.jsp">๊ณต์ง€ ๋ฆฌ์ŠคํŠธ</a>
		<a href="./scheduleList.jsp">์ผ์ • ๋ฆฌ์ŠคํŠธ</a>
	</div>
	<h1>๊ณต์ง€์ž…๋ ฅ</h1>
	<form action="./insertNoticeAction.jsp" method="post">
		<table>
			<tr>
				<td>notice_title</td>
				<td>
					<input type="text" name="noticeTitle">
				</td>
			</tr>
			<tr>
				<td>notice_content</td>
				<td>
					<textarea rows="5" cols="80" name="noticeContent"></textarea>
				</td>
			</tr>
			<tr>
				<td>notice_writer</td>
				<td>
					<input type="text" name="noticeWriter">
				</td>
			</tr>
			<tr>
				<td>notice_pw</td>
				<td>
					<input type="password" name="noticePw">
				</td>
			</tr>
			<tr>
				<td colspan="2">
					<button type="submit">์ž…๋ ฅ</button>
				</td>
			</tr>
		</table>
	</form>
</body>
</html>
  • action ํŽ˜์ด์ง€๋กœ ์ž…๋ ฅํ•œ ๊ฐ’๋“ค์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋„๋ก form action ํƒœ๊ทธ์™€ input ํƒœ๊ทธ๋ฅผ ์ž‘์„ฑํ–ˆ๋‹ค. post๋ฐฉ์‹์œผ๋กœ ์ง€์ •ํ–ˆ์œผ๋ฉฐ, name๋„ ์ž˜ ์ง€์ •ํ•ด์ค€๋‹ค.
  • button type์€ submit ๋นผ๋จน์ง€ ๋ง ๊ฒƒ!
  • notice_no๋Š” AUTO-INCREMENT ์ด๋ฏ€๋กœ ์ž‘์„ฑํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.
  • createdate์™€ updatedate ๋˜ํ•œ, action ํŽ˜์ด์ง€์—์„œ insert์‹œ ์ž๋™์œผ๋กœ ๋ถ€์—ฌํ•ด์•ผํ•˜๋ฏ€๋กœ form ํŽ˜์ด์ง€์—์„  ์ž‘์„ฑํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.

๐Ÿ“ ๊ฒฐ๊ณผ


๐Ÿ“Œ insertNoticeAction.jsp

๊ธฐ๋Šฅ์ ์ธ ๋ถ€๋ถ„์ด ์ด๋ฃจ์–ด์ง€๋Š” ํŽ˜์ด์ง€์ด๋‹ค. ์ฆ‰, formํŽ˜์ด์ง€์—์„œ ๋„˜๊ฒจ๋ฐ›์€ ๊ฐ’๋“ค์„ ๋ฐ์ดํ„ฐ ํ…Œ์ด๋ธ”์— insertํ•˜๊ธฐ ์œ„ํ•œ ํŽ˜์ด์ง€๋กœ, ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ง€๋Š” ํŽ˜์ด์ง€๋Š” ์•„๋‹ˆ๋‹ค. view๊ฐ€ ์—†๋‹ค๊ณ ๋„ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. view๊ฐ€ ์—†๋Š” ํŽ˜์ด์ง€๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค์‹œ ๋Œ์•„๊ฐˆ ์ˆ˜ ์žˆ๋„๋ก ๋งˆ์ง€๋ง‰์— redirection์„ ๊ผญ ํ•ด์ฃผ์–ด์•ผํ•œ๋‹ค. ์•„๋‹ˆ๋ฉด ์‚ฌ์šฉ์ž๋Š” ๋นˆํŽ˜์ด์ง€์— ๊ทธ๋Œ€๋กœ ๋‚จ๊ฒŒ๋˜์–ด๋ฒ„๋ฆฌ๊ณ  ๋งŒ๋‹ค.

์›๋ž˜๋Š” ์ด๋Ÿฐ ํŽ˜์ด์ง€๋ฅผ html๋กœ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ  ์ž๋ฐ”๋กœ ์ž‘์„ฑํ•œ๋‹ค. ๊ธฐ๋Šฅ์ ์ธ ๋ถ€๋ถ„๊ณผ ๋ณด์—ฌ์ง€๋Š” ๋ถ€๋ถ„์„ ๋”ฐ๋กœ ๋‚˜๋ˆ ์„œ ์ž‘์—…ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ด๊ฒƒ์„ mvc(Model-View-Controller)๋ฐฉ์‹์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. mvc๋ฐฉ์‹์€ ํ˜‘์—…์ด ๊ฐ€๋Šฅํ•˜๊ณ  ์œ ์ง€๋ณด์ˆ˜์—๋„ ์šฉ์ดํ•˜๋‹ค. ์ด ๋ฐฉ์‹์— ๋Œ€ํ•ด์„œ๋Š” ์ถ”ํ›„ ๋” ์ž์„ธํžˆ ๋ฐฐ์šฐ๊ธฐ๋กœ ํ–ˆ๋‹ค.

๐Ÿ“ ์ž‘์„ฑ

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import = "java.sql.Connection" %>
<%@ page import = "java.sql.DriverManager" %>
<%@ page import = "java.sql.PreparedStatement" %>
<%
	// post๋ฐฉ์‹ ์ธ์ฝ”๋”ฉ ์ฒ˜๋ฆฌ (ํ•œ๊ธ€ ๊นจ์ง€์ง€ ์•Š๊ฒŒ)
	request.setCharacterEncoding("utf-8");

	// validation (์š”์ฒญ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ’ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ)
	// ๊ณต๋ฐฑ๋„ ์žŠ์ง€ ๋ง๊ธฐ! ๊ณต๋ฐฑ์€ equals๋กœ
	if(request.getParameter("noticeTitle") == null
			|| request.getParameter("noticeContent") == null
			|| request.getParameter("noticeWriter") == null
			|| request.getParameter("noticePw") == null
			|| request.getParameter("noticeTitle").equals("")
			|| request.getParameter("noticeContent").equals("")
			|| request.getParameter("noticeWriter").equals("")
			|| request.getParameter("noticePw").equals("")) {
			
		response.sendRedirect("./insertNoticeForm.jsp");
		return;
	}

	// ๊ฐ’ ๋ณ€์ˆ˜๋กœ ๋ฐ›์•„๋†“๊ธฐ
	String noticeTitle = request.getParameter("noticeTitle");
	String noticeContent = request.getParameter("noticeContent");
	String noticeWriter = request.getParameter("noticeWriter");
	String noticePw = request.getParameter("noticePw");
	
	// ๊ฐ’๋“ค์„ ๋ฐ์ดํ„ฐ ํ…Œ์ด๋ธ”์— ์ž…๋ ฅ(insert)
	/*
		insert into notice(
				notice_title, notice_content, notice_writer, notice_pw, createdate, updatedate
		) values(?,?,?,?,now(),now())
	*/
	
	// 1) ๋“œ๋ผ์ด๋ฒ„ ๋กœ๋”ฉ
	Class.forName("org.mariadb.jdbc.Driver"); 
			
	// 2) mariadb ์„œ๋ฒ„์— ์ ‘์†, ์ ‘์† ์œ ์ง€
	Connection conn = DriverManager.getConnection(
			"jdbc:mariadb://127.0.0.1:3306/diary","****","****");
	
	// 3) ์ฟผ๋ฆฌ ์ƒ์„ฑ ํ›„ ์‹คํ–‰
	String sql = "insert into notice(notice_title, notice_content, notice_writer, notice_pw, createdate, updatedate) values(?,?,?,?,now(),now())";
	PreparedStatement stmt = conn.prepareStatement(sql);
	// ? ์ด 4๊ฐœ (1~4)
	stmt.setString(1, noticeTitle);
	stmt.setString(2, noticeContent);
	stmt.setString(3, noticeWriter);
	stmt.setString(4, noticePw);
	int row = stmt.executeUpdate(); // ๋””๋ฒ„๊น…์šฉ๋„, 1์ด๋ฉด 1ํ–‰ insert์„ฑ๊ณต/ 2๋ฉด 2ํ–‰ insert์„ฑ๊ณต / 0์ด๋ฉด insert๋œ ํ–‰์ด ์—†์Œ
	// conn.commit(); // conn.setAutoCommit์˜ ๋””ํดํŠธ๊ฐ’์ด ture์ด๋ฏ€๋กœ ์ž๋™ commit๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒ๋žต
	
	// redirection
	response.sendRedirect("./noticeList.jsp");
%>
  • request.setCharacterEncoding("utf-8"); : form ํŽ˜์ด์ง€์—์„œ post๋ฐฉ์‹์œผ๋กœ ๊ฐ’๋“ค์„ ๋ฐ›์•„์™”์„ ๋•Œ์—๋Š” ๊ฐ’์ด ํ•œ๊ธ€์ด๋˜ ์•„๋‹ˆ๋˜ ์ธ์ฝ”๋”ฉ์„ ํ•ด์ฃผ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ์ œ์ผ ๋จผ์ € ์ƒ๋‹จ์—์„œ ํ•ด์ค€๋‹ค.

  • ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ (validation) : ๋ฐ›์•„์˜จ ๊ฐ’๋“ค์ด null ๋˜๋Š” ๊ณต๋ฐฑ์ด ์•„๋‹Œ์ง€ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ๋จผ์ € ํ•ด์ฃผ๊ณ , ๊ฐ’์ด null ์ด๊ฑฐ๋‚˜ ๊ณต๋ฐฑ์ผ ๊ฒฝ์šฐ ๋‹ค์‹œ form ํŽ˜์ด์ง€๋กœ ๋Œ์•„๊ฐˆ ์ˆ˜ ์žˆ๋„๋ก ๋ฆฌ๋‹ค์ด๋ ‰์…˜ ํ•ด์ค€๋‹ค. ๋ฆฌ๋‹ค์ด๋ ‰์…˜ ํ›„ ์ฝ”๋“œ๊ฐ€ ๊ณ„์† ์ง„ํ–‰๋˜์ง€ ์•Š๋„๋ก return; ์„ ์žŠ์–ด์„œ๋Š” ์•ˆ๋œ๋‹ค!

  • createdate์™€ updatedate๋Š” NOW()๋ฅผ ์ด์šฉํ•œ๋‹ค. ํ˜„์žฌ ๋‚ ์งœ๊ฐ€ (์‹œ๊ฐ„๋„ ํฌํ•จ๋œ๋‹ค) ์ž…๋ ฅ๋œ๋‹ค.

  • .executeUpdate : SELECT๋ฌธ์„ ์‹คํ–‰์‹œํ‚ฌ๋•Œ์—๋Š” ExecuteQuery๋ฅผ ์ด์šฉํ•˜์—ฌ ResultSet์— ๋ฐ˜ํ™˜๊ฐ’์„ ๋‹ด์•˜๋‹ค. ํ•˜์ง€๋งŒ INSERT / DELETE / UPDATE๋ฌธ์€ ExecuteUpdate๋กœ ์‹คํ–‰ํ•œ๋‹ค. ๋ฐ˜ํ™˜๊ฐ’์œผ๋กœ ์‹คํ–‰๋œ ํ–‰์˜ ์ˆ˜๋ฅผ ๋‹ด๋Š”๋‹ค. (1์ด๋ฉด 1ํ–‰, 2๋ฉด 2ํ–‰์ด ์„ฑ๊ณต, 0์ผ๊ฒฝ์šฐ ์‹คํŒจ)

  • conn.commit(); : TCL ์ค‘ ํ•˜๋‚˜๋กœ, ์›๋ž˜๋Š” ์ฟผ๋ฆฌ ์‹คํ–‰ํ›„ ๋งˆ์ง€๋ง‰์— commit์„ ํ•ด์ฃผ์–ด์•ผํ•œ๋‹ค. ํ•˜์ง€๋งŒ conn.setAutoCommit์˜ ๋””ํดํŠธ๊ฐ’์ด ture ์ฆ‰ ์ž๋™์œผ๋กœ commit์ด ๋˜์–ด์žˆ์œผ๋ฏ€๋กœ ์ž‘์„ฑํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค. ํ•˜์ง€๋งŒ ๋งŒ์•ฝ์— ์ƒ๋‹จ์—์„œ conn.setAutoCommit์— false๊ฐ’์„ ์ฃผ์—ˆ๋‹ค๋ฉด insert ํ›„์— commit์„ ์ž‘์„ฑํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

  • response.sendRedirect("./noticeList.jsp"); : ๋ชจ๋“  ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋œ ํ›„ ์‚ฌ์šฉ์ž๊ฐ€ view๊ฐ€ ์—†๋Š” ๋นˆ ํŽ˜์ด์ง€์— ๋‚จ์ด์žˆ์ง€ ์•Š๋„๋ก ๋ฆฌ๋‹ค์ด๋ ‰์…˜ ํ•ด์ค€๋‹ค.

๐Ÿ’ก ๊ณผ์ œ

๊ณผ์ œ๋กœ ๋งŒ๋“ค์—ˆ๋˜ storeํŽ˜์ด์ง€์—๋„ ์ง์ ‘ insert ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•ด๋ณด์•˜๋‹ค.

๐Ÿ“Œ storeList.jsp

<!-- ๊ธ€์“ฐ๊ธฐ ํผ ์ถ”๊ฐ€ -->
<a href="./insertStoreForm.jsp">๊ธ€์“ฐ๊ธฐ</a>

๊ธ€์“ฐ๊ธฐ๋ฅผ ํด๋ฆญํ•˜๋ฉด insertStoreForm.jsp ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•œ๋‹ค.


ํŒจ์Šค์›Œ๋“œ์ž…๋ ฅ๋ž€๋„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ ํ…Œ์ด๋ธ”์— store_pw๋ฅผ ์ถ”๊ฐ€ํ–ˆ๋‹ค.

๐Ÿ“Œ insertStoreForm.jsp

๐Ÿ“ ์ž‘์„ฑ

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>insertStoreForm.jsp</title>
<style>
	.center {text-align: center;}
</style>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js"></script>
</head>
<body>
	<div class="center"><!-- ๋ฉ”์ธ๋ฉ”๋‰ด -->
		<a href="./storeHome.jsp">ํ™ˆ์œผ๋กœ</a>
		<a href="./storeList.jsp">๋ฆฌ์ŠคํŠธ๋กœ</a>
	</div>
	<div class="container mt-3">
	<h1 class="center">๊ธ€ ์ž‘์„ฑ&#127869;</h1>
	<form action="./insertStoreAction.jsp" method="post">
		<table class="table table-bordered">
			<tr>
				<td>์‹๋‹น์ด๋ฆ„</td>
				<td>
					<input type="text" name="storeName" class="form-control">
				</td>
			</tr>
			<tr>
				<td>์นดํ…Œ๊ณ ๋ฆฌ</td>
				<td>
					<select name="storeCategory" class="form-select">
						<option value="">==์„ ํƒ==</option> <!-- ์„ ํƒ๋ž€์€ value๋ฅผ ๊ณต๋ฐฑ -->
						<option value="ํ•œ์‹">ํ•œ์‹</option>
						<option value="์ผ์‹">์ผ์‹</option>
						<option value="์ค‘์‹">์ค‘์‹</option>
					</select>
				</td>
			</tr>
			<tr>
				<td>์ฃผ์†Œ</td>
				<td>
					<input type="text" name="storeAddress" class="form-control">
				</td>
			</tr>
			<tr>
				<td>์ ์›์ˆ˜</td>
				<td>
					<input type="number" name="storeEmpCnt" class="form-control">
				</td>
			</tr>
			<tr>
				<td>๊ฐœ์—…์ผ์ž</td>
				<td>
					<input type="date" name="storeBegin" class="form-control">
				</td>
			</tr>
			<tr>
				<!-- password ์ž…๋ ฅ๋ž€ ์ถ”๊ฐ€ -->
				<td>๋น„๋ฐ€๋ฒˆํ˜ธ</td>
				<td>
					<input type="password" name="storePw" class="form-control">
				</td>
			</tr>
			<tr>
				<td colspan="2">
					<button type="submit" class="btn btn-primary">์ž…๋ ฅ</button>
				</td>
			</tr>
		</table>
	</form>
	</div>
</body>
</html>
  • ์นดํ…Œ๊ณ ๋ฆฌ๋Š” select ํƒœ๊ทธ๋ฅผ ์ด์šฉํ•ด์„œ ์ž‘์„ฑํ•ด๋ณด์•˜๋‹ค. radio ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ• ์ง€ ๊ณ ๋ฏผํ–ˆ์ง€๋งŒ, ์นดํ…Œ๊ณ ๋ฆฌ๋Š” select ํƒœ๊ทธ๊ฐ€ ๋” ์ž˜์–ด์šธ๋ ค๋ณด์—ฌ์„œ ์„ ํƒ! ==์„ ํƒ==์„ ๋งŒ๋“ค์–ด์„œ ์กฐ๊ธˆ ๋” ๊น”๋”ํ•ด๋ณด์ด๋„๋ก ํ–ˆ๋‹ค. value๊ฐ’์€ ๊ณต๋ฐฑ์„ ์ฃผ์–ด์„œ ํ˜น์‹œ๋‚˜ ==์„ ํƒ==์ธ ์ƒํƒœ๋กœ actionํŽ˜์ด์ง€๋กœ ๋„˜์–ด๊ฐ€๋„, ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋•Œ๋ฌธ์— ๋‹ค์‹œ ๋Œ์•„์˜ค๊ฒŒ ๋œ๋‹ค.

๐Ÿ“ ๊ฒฐ๊ณผ


๐Ÿ“Œ insertStoreAction.jsp

๐Ÿ“ ์ž‘์„ฑ

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import = "java.sql.Connection" %>
<%@ page import = "java.sql.DriverManager" %>
<%@ page import = "java.sql.PreparedStatement" %>
<%
	// post ๋ฐฉ์‹ ํ•œ๊ธ€ ๊นจ์ง€์ง€ ์•Š๊ฒŒ ์ธ์ฝ”๋”ฉ
	request.setCharacterEncoding("utf-8");

	// ์š”์ฒญ๊ฐ’ ๊ฒ€์‚ฌ
	// null๊ณผ ๊ณต๋ฐฑ ๊ฒ€์‚ฌ
	if(request.getParameter("storeName") == null
			|| request.getParameter("storeCategory") == null
			|| request.getParameter("storeAddress") == null
			|| request.getParameter("storeEmpCnt") == null
			|| request.getParameter("storeBegin") == null
			|| request.getParameter("storePw") == null
			|| request.getParameter("storeName").equals("")
			|| request.getParameter("storeCategory").equals("")
			|| request.getParameter("storeAddress").equals("")
			|| request.getParameter("storeEmpCnt").equals("")
			|| request.getParameter("storeBegin").equals("") 
			|| request.getParameter("storePw").equals("")) {
		response.sendRedirect("./insertStoreForm.jsp");
		// ๊ฐ’์ด null์ด๊ฑฐ๋‚˜ ๊ณต๋ฐฑ์ผ ๊ฒฝ์šฐ ๋‹ค์‹œ ๋Œ์•„๊ฐ€์•ผํ•  ์ฃผ์†Œ
		return;
		// 1) ์ฝ”๋“œ์ง„ํ–‰์ข…๋ฃŒ 2) ๋ฐ˜ํ™˜๊ฐ’์„ ๋„˜๊ฒจ์คŒ
		// ๊ฐ’์ด null์ด๊ฑฐ๋‚˜ ๊ณต๋ฐฑ์ผ ๊ฒฝ์šฐ ๋ฐ‘์— ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์•ˆ๋˜๊ธฐ ๋•Œ๋ฌธ์—
	}
	
	// ๊ฐ’ ๋ณ€์ˆ˜๋กœ ๋ฐ›์•„๋†“๊ธฐ
	String storeName = request.getParameter("storeName");
	String storeCategory = request.getParameter("storeCategory");
	String storeAddress = request.getParameter("storeAddress");
	String storeBegin = request.getParameter("storeBegin");
	String storePw = request.getParameter("storePw");
	int storeEmpCnt = Integer.parseInt(request.getParameter("storeEmpCnt")); // ์ ์›์ˆ˜๋Š” intํƒ€์ž…
	
	// ๊ฐ’๋“ค์„ ๋ฐ์ดํ„ฐ ํ…Œ์ด๋ธ”์— insertํ•˜๊ธฐ
	// 1) ๋“œ๋ผ์ด๋ฒ„ ๋กœ๋”ฉ
	Class.forName("org.mariadb.jdbc.Driver");
	System.out.println("๋“œ๋ผ์ด๋ฒ„ ๋กœ๋”ฉ ์„ฑ๊ณต");
			
	// 2) mariadb ์„œ๋ฒ„์— ์ ‘์†, ์ ‘์† ์œ ์ง€
	Connection conn = DriverManager.getConnection(
			"jdbc:mariadb://127.0.0.1:3306/homework0419","****","****");
	System.out.println("์ ‘์†์„ฑ๊ณต: "+conn);
	
	// 3) ์ฟผ๋ฆฌ ์ƒ์„ฑ ํ›„ insert
	String sql = "insert into store(store_name, store_category, store_address, store_emp_cnt, store_begin, store_pw, createdate, updatedate) values(?,?,?,?,?,?,now(),now())";
	PreparedStatement stmt = conn.prepareStatement(sql);
	System.out.println("์ž…๋ ฅ์ฟผ๋ฆฌ: " + stmt);
	// ? ์ด ๋‹ค์„ฏ๊ฐœ (1~5)
	stmt.setString(1, storeName);
	stmt.setString(2, storeCategory);
	stmt.setString(3, storeAddress);
	stmt.setInt(4, storeEmpCnt); // ์ ์›์ˆ˜๋Š” intํƒ€์ž…
	stmt.setString(5, storeBegin);
	stmt.setString(6, storePw);
	int row = stmt.executeUpdate(); // 1์ด๋ฉด 1ํ–‰ insert์„ฑ๊ณต, 2๋ฉด 2ํ–‰ insert์„ฑ๊ณต, 0์ด๋ฉด insert๋œ ํ–‰์ด ์—†์Œ
	System.out.println("์ž…๋ ฅ์„ฑ๊ณต: " + row); // ๋””๋ฒ„๊น… // 1
	// conn.commit(); ์€ ์ƒ๋žต // conn.setAutoCommit์˜ ๋””ํดํŠธ๊ฐ’์ด ture์ด๋ฏ€๋กœ ์ž๋™ commit๋˜๊ธฐ ๋•Œ๋ฌธ์—
	
	// view๊ฐ€ ์—†์œผ๋ฏ€๋กœ redirection
	response.sendRedirect("./storeList.jsp");
%>
  • ?๊ฐ’์— set์œผ๋กœ ๊ฐ’์„ ์ค„ ๋•Œ ํ•ด๋‹น ํƒ€์ž…์„ ํ‹€๋ฆฌ์ง€ ์•Š๋„๋ก ์ฃผ์˜! storeEmpCnt๋Š” int ํƒ€์ž…์ด๋ฏ€๋กœ setInt๋กœ ์ž‘์„ฑ!

๐Ÿ’ก delete ๊ธฐ๋Šฅ ์ถ”๊ฐ€

๋‘๋ฒˆ์งธ๋กœ ์ž‘์„ฑ๋œ ๊ธ€์„ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋„๋ก noticeOne.jsp ํŽ˜์ด์ง€์— ๊ธ€์‚ญ์ œํผ์œผ๋กœ ์—ฐ๊ฒฐ๋˜๋Š” aํƒœ๊ทธ๋ฅผ ์ถ”๊ฐ€ํ–ˆ๋‹ค. ๋‚ด์ผ ์ถ”๊ฐ€ํ•  ์ˆ˜์ •(update)๊ธฐ๋Šฅ์„ ์œ„ํ•œ aํƒœ๊ทธ๋„ ๋ฏธ๋ฆฌ ๊ฐ™์ด ์ถ”๊ฐ€ํ–ˆ๋‹ค.

๐Ÿ“Œ noticeOne.jsp

<div>
<!-- ์–ด๋–ค ๊ฒŒ์‹œ๊ธ€์„(noticeNo๋กœ ๊ตฌ๋ถ„) ์‚ญ์ œ/์ˆ˜์ •ํ• ์ง€ -->
<a href="./updateNoticeForm.jsp?noticeNo=<%=noticeNo%>">์ˆ˜์ •</a>
<a href="./deleteNoticeForm.jsp?noticeNo=<%=noticeNo%>">์‚ญ์ œ</a>
</div>


์‚ญ์ œ๋ฅผ ํด๋ฆญํ•˜๋ฉด deleteNoticeForm.jsp ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•œ๋‹ค.

๐Ÿ“Œ deleteNoticeForm.jsp

๐Ÿ“ ์ž‘์„ฑ

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
	// ์š”์ฒญ๊ฐ’ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ
	if(request.getParameter("noticeNo") == null) {
		response.sendRedirect("./noticeList.jsp");
		return; // 1) ์ฝ”๋“œ์ง„ํ–‰์ข…๋ฃŒ 2) ๋ฐ˜ํ™˜๊ฐ’์„ ๋‚จ๊ธธ๋•Œ
	}
	
	// ๊ฐ’ ๋ณ€์ˆ˜์— ๋ฐ›๊ธฐ
	// int ํƒ€์ž…์ด๋ฏ€๋กœ Integer.parseInt
	int noticeNo = Integer.parseInt(request.getParameter("noticeNo"));
	System.out.println(noticeNo + "<-- deleteNoticeForm param noticeNo"); // ๋””๋ฒ„๊น…ํ•  ๋•Œ ์˜†์— ์„ค๋ช…๋„ ์ž˜ ๋„ฃ๊ธฐ
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>deleteNoticeForm.jsp</title>
</head>
<body>
	<h1>๊ณต์ง€ ์‚ญ์ œ</h1>
	<form action="./deleteNoticeAction.jsp" method="post">
		<table>
			<tr>
				<td>notice_no</td>
				<td>
					<!-- <input type="hidden" name="noticeNo" value="<%=noticeNo%>">
							์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ฐ’์ด ์•„์˜ˆ ์•ˆ๋ณด์ด๊ณ  ๋ฌผ๋ก  ์ˆ˜์ •๋„ ๋ถˆ๊ฐ€๋Šฅ -->
					<input type="text" name="noticeNo" value="<%=noticeNo%>" readonly="readonly">
					<!-- readonly๋Š” ๊ฐ’์ด ๋ˆˆ์— ๋ณด์ด์ง€๋งŒ ์ˆ˜์ • ๋ถˆ๊ฐ€๋Šฅ -->
				</td>
			</tr>
			<tr>
				<td>notice_pw</td>
				<td>
					<!-- action ํŽ˜์ด์ง€์—์„œ pw๊ฐ€ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธ -->
					<input type="password" name="noticePw">
				</td>
			</tr>
			<tr>
				<td colspan="2">
					<button type="submit">์‚ญ์ œ</button>
				</td>
			</tr>
		</table>
	
	</form>
</body>
</html>
  • formํŽ˜์ด์ง€์—์„œ ์ž…๋ ฅํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” actionํŽ˜์ด์ง€์—์„œ insert์‹œ ์ž…๋ ฅํ–ˆ๋˜ ๋น„๋ฐ€๋ฒˆํ˜ธ์™€ ๊ฐ™๋‹ค๋ฉด delete๊ฐ€ ์‹คํ–‰๋˜๊ฒŒ ๋˜๋ฏ€๋กœ input ํƒœ๊ทธ๋กœ ๊ฐ’์„ ๋„˜๊ฒจ์ค€๋‹ค.
  • storeNo๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•ด์•ผ๋˜๋Š” ์ •๋ณด๋Š” ์•„๋‹ˆ์ง€๋งŒ input ํƒœ๊ทธ๋กœ ๋‘”๋‹ค. storeNo ๋˜ํ•œ action ํŽ˜์ด์ง€์—์„œ delete๋ฅผ ์ˆ˜ํ–‰ํ•  ๊ธ€์„ ํŠน์ •ํ•  ์œ ์ผํ•œ ํ‚ค๊ฐ’์œผ๋กœ ์“ฐ์—ฌ์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. value์— storeNo์˜ ๊ฐ’์„ ์ง€์ •ํ•œ๋‹ค. ๋Œ€์‹  ์‚ฌ์šฉ์ž๊ฐ€ ์ž„์˜๋กœ ์ˆ˜์ •์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋„๋ก hidden ๋˜๋Š” readonly๋ฅผ ์ค€๋‹ค.
  • hidden์€ ๊ฐ’์„ ์•„์˜ˆ ์ˆจ๊ฒจ๋ฒ„๋ฆฐ๋‹ค. (์ฆ‰, ์ˆ˜์ •๋„ ๋‹น์—ฐํžˆ ๋ถˆ๊ฐ€๋Šฅ)
  • readonly๋Š” ๊ฐ’์ด ๋ณด์ด์ง€๋งŒ ์ˆ˜์ •์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. (์ฆ‰, ๋ง ๊ทธ๋Œ€๋กœ ์ฝ๊ธฐ๋งŒ ๊ฐ€๋Šฅ)

๐Ÿ“ ๊ฒฐ๊ณผ


๐Ÿ“Œ deleteNoticeAction.jsp

๐Ÿ“ ์ž‘์„ฑ

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import = "java.sql.Connection" %>
<%@ page import = "java.sql.DriverManager" %>
<%@ page import = "java.sql.PreparedStatement" %>
<%
	// ์š”์ฒญ๊ฐ’ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ
	if(request.getParameter("noticeNo") == null
			|| request.getParameter("noticePw") == null
			|| request.getParameter("noticeNo").equals("")
			|| request.getParameter("noticePw").equals("")) {
		response.sendRedirect("./noticeList.jsp");
		return;
	}

	// ๊ฐ’ ๋ณ€์ˆ˜์— ๋„ฃ๊ธฐ
	int noticeNo = Integer.parseInt(request.getParameter("noticeNo"));
	String noticePw = request.getParameter("noticePw");
	
	// ๋””๋ฒ„๊น… // ์–ด๋””์—์„œ ์ถœ๋ ฅํ•˜๋Š” ๊ฑด์ง€๋„ ๊ฐ™์ด ์ ์–ด์ฃผ๊ธฐ
	System.out.println("deleteNoticeAction param noticeNo: " + noticeNo);
	System.out.println("deleteNoticeAction param noticePw: " + noticePw);
	
	// 1) ๋“œ๋ผ์ด๋ฒ„ ๋กœ๋”ฉ
	Class.forName("org.mariadb.jdbc.Driver");
	// 2) mariadb ์„œ๋ฒ„์— ์ ‘์†, ์ ‘์† ์œ ์ง€
	Connection conn = DriverManager.getConnection(
			"jdbc:mariadb://127.0.0.1:3306/diary","****","****");
	// 3) ์‚ญ์ œ ์ฟผ๋ฆฌ ์ƒ์„ฑ
	// storeNo์™€ storepw๊ฐ€ ๋ชจ๋‘ ์ผ์น˜ํ•ด์•ผํ•˜๋ฏ€๋กœ and์ ˆ ์‚ฌ์šฉ
	String sql = "delete from notice where notice_no=? and notice_pw=?";
	PreparedStatement stmt = conn.prepareStatement(sql);
	// ? ์ด 2๊ฐœ (1~2)
	stmt.setInt(1, noticeNo);
	stmt.setString(2, noticePw);
	System.out.println("deleteNoticeAction sql: " + stmt); // ๋””๋ฒ„๊น…
	
	// ์‚ญ์ œ ์ฟผ๋ฆฌ๊ฐ€ ์ž˜ ์‹คํ–‰๋˜์—ˆ๋Š”์ง€ ํ™•์ธ
	int row = stmt.executeUpdate(); // ์ •์ƒ ์‹คํ–‰์‹œ 1, ์‹คํŒจ์‹œ 0
	System.out.println("deleteNoticeAction row: " + row);
	
	if(row == 0) {
		response.sendRedirect("./deleteNoticeForm.jsp?noticeNo=" + noticeNo);
	} else {
		response.sendRedirect("./noticeList.jsp");
	}
%>
  • System.out.println("deleteNoticeAction param noticeNo: " + noticeNo); : ๋””๋ฒ„๊น… ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ์—๋Š” ์–ด๋–ค ํŽ˜์ด์ง€์˜ ์–ด๋–ค ๊ฐ’์ธ์ง€ ์•ž์— ๊ผญ ๋ถ™์—ฌ์ฃผ๊ธฐ!! ๋˜ํ•œ ์ฝ”๋“œ๋ฅผ ๋‹ค ์ž‘์„ฑํ•œ ๋’ค ๋„ฃ๋Š” ๋””๋ฒ„๊น… ์ฝ”๋“œ๋Š” ์•„๋ฌด๋Ÿฐ ์˜๋ฏธ๊ฐ€ ์—†๋‹ค. ๋””๋ฒ„๊น… ์ฝ”๋“œ๋Š” ๊ทธ๋•Œ๊ทธ๋•Œ ์‹คํ–‰์‹œ์ผœ๋ณด๋ฉฐ ๊ฐ’์ด ์ •์ƒ์ ์„ ๋„˜์–ด์˜ค๋Š”์ง€, ์ฟผ๋ฆฌ๊ฐ€ ์ œ๋Œ€๋กœ ์‹คํ–‰๋˜์—ˆ๋Š”์ง€๋ฅผ ํ™•์ธํ•˜๋Š” ์šฉ๋„์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ฃผ์„ ๋˜ํ•œ ๋งˆ์ฐฌ๊ฐ€์ง€์ด๋‹ค.

  • storeNo์™€(AND) storePw๊ฐ€ ์ผ์น˜ํ•˜๋Š” ๊ฒŒ์‹œ๊ธ€์„ ์‚ญ์ œํ•ด์•ผํ•˜๋ฏ€๋กœ where์ ˆ์„ ์‚ฌ์šฉํ•œ๋‹ค.

  • insert์™€ ๋‹ค๋ฅด๊ฒŒ ์ž…๋ ฅ๋œ ํŒจ์Šค์›Œ๋“œ์˜ ๊ฐ’์— ๋”ฐ๋ผ ์ผ์น˜ํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ์‚ญ์ œ๊ฐ€ ์‹คํŒจ๋˜๋Š” ๋ถ„๊ธฐ๊ฐ€ ์ƒ๊ฒผ๋‹ค. if๋ฌธ์„ ์ด์šฉํ•˜์—ฌ row์˜ ๊ฐ’์œผ๋กœ ๋ถ„๊ธฐ์— ๋”ฐ๋ผ ์‚ญ์ œ๊ฐ€ ์‹คํŒจํ–ˆ์„ ๊ฒฝ์šฐ์™€ ์ •์ƒ์ ์œผ๋กœ ์‚ญ์ œ๋˜์—ˆ์„ ๊ฒฝ์šฐ์˜ view๋ฅผ ๋ฆฌ๋‹ค์ด๋ ‰์…˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ’ก ๊ณผ์ œ

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ delete ๊ธฐ๋Šฅ์„ store ํŽ˜์ด์ง€์—๋„ ์ง์ ‘ ์ถ”๊ฐ€ํ•ด๋ณด์•˜๋‹ค.

๐Ÿ“Œ storeOne.jsp

<div class="center">
	<!-- ์ˆ˜์ •/์‚ญ์ œ aํƒœ๊ทธ ์ถ”๊ฐ€ -->
	<!-- ์–ด๋–ค(storeNo)๊ฒŒ์‹œ๊ธ€์„ ์ˆ˜์ •/์‚ญ์ œํ• ์ง€ ์•Œ ์ˆ˜ ์žˆ๋„๋ก storeNo๊ฐ’ ๋„˜๊ธฐ๊ธฐ -->
	<!-- ์–ด๋–ค(storeNo)๊ฒŒ์‹œ๊ธ€์„ ์ˆ˜์ •/์‚ญ์ œํ• ์ง€ ์ถœ๋ ฅํ•ด์ฃผ๊ธฐ ์œ„ํ•ด storeName๊ฐ’ ๋„˜๊ธฐ๊ธฐ -->
	<a href="./updateStoreForm.jsp?storeNo=<%=storeNo%>">์ˆ˜์ •</a>
	<a href="./deleteStoreForm.jsp?storeNo=<%=storeNo%>&storeName=<%=rs.getString("store_name")%>">์‚ญ์ œ</a>
</div>

  • ์‚ญ์ œ๋ฅผ ํด๋ฆญํ•˜๋ฉด deleteStoreForm.jsp ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•œ๋‹ค.
  • form ํŽ˜์ด์ง€๋กœ ์ด๋™ ์‹œ, ๊ธ€๋ฒˆํ˜ธ ๋ฟ๋งŒ์•„๋‹ˆ๋ผ ์‹๋‹น์ด๋ฆ„๋„ ๊ฐ™์ด ๋ณด์—ฌ์ฃผ๊ณ  ์‹ถ์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ storeName์˜ ๊ฐ’๋„ ๋„˜๊ฒจ์ฃผ์—ˆ๋‹ค.

๐Ÿ“Œ deleteStoreForm.jsp

๐Ÿ“ ์ž‘์„ฑ

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
	// ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ
	// null์ด๊ฑฐ๋‚˜ ๊ณต๋ฐฑ์ผ ๊ฒฝ์šฐ
	if(request.getParameter("storeNo") == null
			|| request.getParameter("storeName") == null
			|| request.getParameter("storeNo").equals("")
			|| request.getParameter("storeName").equals("")) {
		response.sendRedirect("./storeList.jsp");
		// ๋Œ์•„๊ฐˆ ํŽ˜์ด์ง€ ์ฃผ์†Œ ์•Œ๋ ค์ฃผ๊ธฐ
		return;
		// 1) ์ฝ”๋“œ์ง„ํ–‰์ข…๋ฃŒ 2) ๋ฐ˜ํ™˜๊ฐ’์„ ๋„˜๊ธธ๋•Œ
	}

	// null์ด๊ฑฐ๋‚˜ ๊ณต๋ฐฑ์ด ์•„๋‹๊ฒฝ์šฐ
	// ๋ณ€์ˆ˜์— ๊ฐ’ ๋„ฃ๊ธฐ
	int storeNo = Integer.parseInt(request.getParameter("storeNo")); // int ํƒ€์ž…์ด๋ฏ€๋กœ Integer.parseInt
	String storeName = request.getParameter("storeName");
	// ๋””๋ฒ„๊น…
	System.out.println("deleteStoreForm storeNo: " + storeNo);
	System.out.println("deleteStoreForm storeName: " + storeName);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>deleteStoreForm.jsp</title>
<style>
	.center {text-align: center;}
</style>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js"></script>
</head>
<body>
	<div class="center"><!-- ๋ฉ”์ธ๋ฉ”๋‰ด -->
		<a href="./storeHome.jsp">ํ™ˆ์œผ๋กœ</a>
		<a href="./storeList.jsp">๋ฆฌ์ŠคํŠธ๋กœ</a>
	</div>
	<div class="container mt-3">
	<h1 class="center">๊ธ€ ์‚ญ์ œ&#127869;</h1>
	<form action="./deleteStoreAction.jsp" method="post">
		<table class="table table-bordered">
			<tr>
				<td>์‹๋‹น์ด๋ฆ„</td>
				<td>
					<!-- action ํŽ˜์ด์ง€์—์„œ sql๋ฌธ์— storeName์„ ์‚ฌ์šฉํ•˜์ง€๋Š” ์•Š์ง€๋งŒ,
						row๊ฐ€ 0์ด ๋  ๊ฒฝ์šฐ ๋‹ค์‹œ form ํŽ˜์ด์ง€๋กœ ๋Œ์•„์˜ค๊ธฐ ๋•Œ๋ฌธ์— storeName์˜ ๊ฐ’๋„ ๊ฐ™์ด ๋„˜๊ฒจ์ค€๋‹ค -->
					<input type="text" name="storeName" value="<%=storeName%>" class="form-control" readonly="readonly">
				</td>
			</tr>
			<tr>
				<td>๊ธ€๋ฒˆํ˜ธ</td>
				<td>
					<!-- <input type="hidden" name="storeNo" value="<%=storeNo%>">
							์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ฐ’์ด ์•„์˜ˆ ์•ˆ๋ณด์ธ๋‹ค. ์ˆ˜์ •๋„ ๋ฌผ๋ก  ๋ถˆ๊ฐ€๋Šฅ -->
					<input type="text" name="storeNo" value="<%=storeNo%>" class="form-control" readonly="readonly">
					<!-- readonly๋Š” ๊ฐ’์ด ๋ˆˆ์— ๋ณด์ด์ง€๋งŒ ์ˆ˜์ •์€ ๋ถˆ๊ฐ€๋Šฅ -->
				</td>
			</tr>
			<tr>
				<td>๋น„๋ฐ€๋ฒˆํ˜ธ</td>
				<td>
					<!-- action ํŽ˜์ด์ง€์—์„œ password๊ฐ€ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•  ๊ฒƒ -->
					<input type="password" name="storePw" class="form-control">
				</td>
			</tr>
			<tr>
				<td colspan="2">
					<button type="submit" class="btn btn-primary">์‚ญ์ œ</button>
				</td>
			</tr>
		</table>
	</form>
	</div>
</body>
</html>
  • storeName์˜ ๊ฐ’์€ action ํŽ˜์ด์ง€์—์„œ ์‚ฌ์šฉ๋˜์ง€๋Š” ์•Š์ง€๋งŒ, ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š์•„์„œ ๋‹ค์‹œ formํŽ˜์ด์ง€๋กœ ๋Œ์•„์˜ค๋Š” ๊ฒฝ์šฐ (row์˜ ๊ฐ’์ด 0์ด์–ด์„œ form ํŽ˜์ด์ง€๋กœ ๋ฆฌ๋‹ค์ด๋ ‰์…˜) storeName์˜ ๊ฐ’์„ ํ‘œ์‹œํ•ด์ฃผ์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— inputํƒœ๊ทธ๋กœ ๊ฐ’์„ ๋„˜๊ฒจ์ฃผ์—ˆ๊ณ , storeNo์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ readonly๋กœ ๋‘์—ˆ๋‹ค.

๐Ÿ“ ๊ฒฐ๊ณผ

์‹๋‹น์ด๋ฆ„๋„ ๊ฐ™์ด ํ‘œ์‹œ๋˜์—ˆ๋‹ค. ์‚ญ์ œ ์ „ ํ™•์ธ์šฉ์ด๋ฏ€๋กœ ์ˆ˜์ •์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

๐Ÿ“Œ deleteStoreAction.jsp

๐Ÿ“ ์ž‘์„ฑ

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import = "java.sql.Connection" %>
<%@ page import = "java.sql.DriverManager" %>
<%@ page import = "java.sql.PreparedStatement" %>
<%
	// ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ
	// null์ด๊ฑฐ๋‚˜ ๊ณต๋ฐฑ์ผ ๊ฒฝ์šฐ
	if(request.getParameter("storeNo") == null
			|| request.getParameter("storePw") == null
			|| request.getParameter("storeName") == null
			|| request.getParameter("storeNo").equals("")
			|| request.getParameter("storePw").equals("")
			|| request.getParameter("storeName").equals("")) {
		response.sendRedirect("./storeList.jsp");
		// ๋Œ์•„๊ฐˆ ํŽ˜์ด์ง€ ์ฃผ์†Œ ์•Œ๋ ค์ฃผ๊ธฐ
		return;
		// 1) ์ฝ”๋“œ์ง„ํ–‰์ข…๋ฃŒ 2) ๋ฐ˜ํ™˜๊ฐ’์„ ๋„˜๊ธธ๋•Œ
	}

	//๋ณ€์ˆ˜์— ๊ฐ’ ๋„ฃ๊ธฐ
	// null์ด๊ฑฐ๋‚˜ ๊ณต๋ฐฑ์ด ์•„๋‹ ๊ฒฝ์šฐ
	int storeNo = Integer.parseInt(request.getParameter("storeNo")); // storeNo๋Š” intํƒ€์ž…
	String storePw = request.getParameter("storePw");
	String storeName = request.getParameter("storeName");
	// ๋””๋ฒ„๊น…
	System.out.println("deleteStoreAction storeNo: " + storeNo);
	System.out.println("deleteStoreAction storePw: " + storePw);
	System.out.println("deleteStoreAction storeName: " + storeName);
	
	// 1) ๋“œ๋ผ์ด๋ฒ„ ๋กœ๋”ฉ
	Class.forName("org.mariadb.jdbc.Driver");
	// 2) mariadb ์„œ๋ฒ„ ์ ‘์†
	Connection conn = DriverManager.getConnection(
		"jdbc:mariadb://127.0.0.1:3306/homework0419","****","****");
	// 3) ์‚ญ์ œ ์ฟผ๋ฆฌ ์ƒ์„ฑ
	// storeNo์™€ storepw๊ฐ€ ๋ชจ๋‘ ์ผ์น˜ํ•ด์•ผํ•˜๋ฏ€๋กœ and์ ˆ ์‚ฌ์šฉ
	String sql = "delete from store where store_no=? and store_pw=?";
	PreparedStatement stmt = conn.prepareStatement(sql);
	// ? ์ด 2๊ฐœ (1~2)
	stmt.setInt(1, storeNo); // storeNo๋Š” intํƒ€์ž…
	stmt.setString(2, storePw);
	System.out.println("deleteStoreAction sql: " + stmt); // ๋””๋ฒ„๊น…
	
	// ์‚ญ์ œ ์ฟผ๋ฆฌ๊ฐ€ ์ž˜ ์‹คํ–‰๋˜์—ˆ๋Š”์ง€ ํ™•์ธ
	int row = stmt.executeUpdate(); // ์„ฑ๊ณต์‹œ 1, ์‹คํŒจ์‹œ 0
	System.out.println("deleteStoreAction row: " + row);
	
	// ์‚ญ์ œ ์ฟผ๋ฆฌ ์„ฑ๊ณต์œ ๋ฌด์— ๋”ฐ๋ผ redirection
	if(row == 0) {
		response.sendRedirect("./deleteStoreForm.jsp?storeNo="+storeNo+"&storeName="+storeName);
		// formํŽ˜์ด์ง€๋กœ ๋Œ์•„๊ฐ€๊ธฐ ๋•Œ๋ฌธ์— no์™€ name๋ฅผ ๊ฐ™์ด ๋„˜๊ฒจ์ค€๋‹ค
	} else {
		response.sendRedirect("./storeList.jsp");
	}
%>
  • form ํŽ˜์ด์ง€๋กœ ๋‹ค์‹œ ๋Œ์•„๊ฐ€์•ผํ•  ๊ฒฝ์šฐ storeNo์™€ storeName์˜ ๊ฐ’์„ ๊ฐ™์ด ๋„˜๊ฒจ์ค€๋‹ค.

๐Ÿง ํ•˜๋ฃจ๋ฅผ ๋งˆ์น˜๋ฉฐ

์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋‹ˆ ์ ์  ๊ธฐ๋ณธ์ ์ธ ํ™ˆํŽ˜์ด์ง€์˜ ํ˜•ํƒœ๋ฅผ ๊ฐ–์ถฐ๋‚˜๊ฐ€๋Š” ๊ฒƒ ๊ฐ™์•„์„œ ์žฌ๋ฏธ์žˆ์—ˆ๋‹ค. ๋‚˜๋ฆ„๋Œ€๋กœ ์‚ฌ์†Œํ•˜์ง€๋งŒ ์ƒˆ๋กœ์šด ๋ถ€๋ถ„์„ ์ถ”๊ฐ€ํ•˜๋ฉด์„œ ๊ณ ๋ฏผํ•˜๋Š” ๊ณผ์ •๋„ ๋ณด๋žŒ์žˆ์—ˆ๋‹ค! ๐Ÿ˜ ๋” ๋งŽ์€ ๊ฒƒ์„ ๋ฐฐ์šฐ๊ฒŒ ๋œ๋‹ค๋ฉด ๋” ๋งŽ์€ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค. ๊ทธ๋‚ ์ด ๊ธฐ๋‹ค๋ ค์ง„๋‹ค!


profile
ํ•˜๋ฃจ ํ•œ๊ฑธ์Œ์”ฉ๐Ÿ’ช ์ดˆ๋ณด ๊ฐœ๋ฐœ์ž ๋„์ „๊ธฐ ๐ŸŒฑ๐Ÿ’ป

0๊ฐœ์˜ ๋Œ“๊ธ€