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


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

์ง€๋‚œ ์‹œ๊ฐ„์— ์ถ”๊ฐ€ํ•œ ์ˆ˜์ • aํƒœ๊ทธ๋ฅผ ํด๋ฆญํ•˜๋ฉด updateNoticeForm.jsp ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•œ๋‹ค.

์ž‘์„ฑ๋œ ๋ฐ์ดํ„ฐ ํ…Œ์ด๋ธ”์˜ ์†์„ฑ ์ค‘ ์‚ฌ์šฉ์ž๊ฐ€ form ํŽ˜์ด์ง€์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์ˆ˜์ • ๊ฐ€๋Šฅํ•œ ๋ถ€๋ถ„์€ ์ œ๋ชฉ์ธ notice_title์™€ ๋‚ด์šฉ์ธ notice_content์ผ ๊ฒƒ์ด๋‹ค.
๊ธ€๋ฒˆํ˜ธ์ธ notice_no์™€ ๊ธ€์ž‘์„ฑ์ž์ธ notice_writer์€ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†๊ณ , createdate์™€ updatedate๋Š” ์ž๋™์œผ๋กœ ๋ถ€์—ฌ๋˜๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ์ˆ˜์ •์‹œ updatedate๋งŒ ๋ฐ”๋€Œ๋ฉด ๋  ๊ฒƒ์ด๋‹ค.
notice_pw๋Š” ์‚ญ์ œ(delete)์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๊ฐ’๊ณผ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธ (where์ ˆ ์‚ฌ์šฉ)ํ•˜๋Š”๋ฐ ์“ฐ์ผ ๊ฒƒ์ด๋‹ค.

๐Ÿ“Œ updateNoticeForm.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" %>
<%@ page import = "java.sql.ResultSet" %> <!-- ์ˆ˜์ •ํผ๋„ select ํ•ด์•ผํ•˜๋ฏ€๋กœ rs ์ด์šฉ -->
<%
	// ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ
	// null์ผ ๊ฒฝ์šฐ ๋ฆฌ๋‹ค์ด๋ ‰์…˜
	// ๋ฆฌํ„ด // ์ฝ”๋“œ์ง„ํ–‰์ข…๋ฃŒ // ๋ฐ˜ํ™˜๊ฐ’์„ ๋„˜๊ธธ๋•Œ
	if(request.getParameter("noticeNo") == null) {
		response.sendRedirect("./noticeList.jsp");
		return;
	}
	
	// null์ด ์•„๋‹๊ฒฝ์šฐ
	// ๋ณ€์ˆ˜์— ๊ฐ’ ๋ฐ›๊ธฐ // int ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜
	int noticeNo = Integer.parseInt(request.getParameter("noticeNo"));
	System.out.println("updateNoticeForm noticeNo: " + noticeNo); // ๋””๋ฒ„๊น…
	
	// 1) ๋“œ๋ผ์ด๋ฒ„๋กœ๋”ฉ
	Class.forName("org.mariadb.jdbc.Driver"); 
	// 2) db์„œ๋ฒ„์— ์ ‘์†
	Connection conn = DriverManager.getConnection(
			"jdbc:mariadb://127.0.0.1:3306/diary","****","****");
	// 3) ์ฟผ๋ฆฌ ์ž‘์„ฑ
	// ํ•ด๋‹น no์— ๋งž๋Š” ํŽ˜์ด์ง€ ์ถœ๋ ฅ == noticeOne ํŽ˜์ด์ง€์™€ ๊ฐ™์€ sql
	String sql = "select notice_no, notice_title, notice_content, notice_writer, createdate, updatedate from notice where notice_no = ?";
	PreparedStatement stmt = conn.prepareStatement(sql);
	// ์ฒซ๋ฒˆ์งธ ?์— noticeNo ๊ฐ’์„ set
	stmt.setInt(1, noticeNo);
	System.out.println("updateNoticeForm sql: " + stmt); // ๋””๋ฒ„๊น…
	ResultSet rs = stmt.executeQuery();
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>updateNoticeForm.jsp</title>
</head>
<body>
	<div><!-- ๋ฉ”์ธ๋ฉ”๋‰ด -->
		<a href="./home.jsp">ํ™ˆ์œผ๋กœ</a>
		<a href="./noticeList.jsp">๊ณต์ง€ ๋ฆฌ์ŠคํŠธ</a>
		<a href="./scheduleList.jsp">์ผ์ • ๋ฆฌ์ŠคํŠธ</a>
	</div>
	
	<h1>๊ณต์ง€ ์ˆ˜์ •</h1>
	<div><!-- ์—๋Ÿฌ๋ฌธ๊ตฌ ์ถ”๊ฐ€ -->
		<%
			if(request.getParameter("msg") != null) {
		%>
				<%=request.getParameter("msg") %>
		<%
			}
		%>
	</div>
	<form action="./updateNoticeAction.jsp" method="post">
	<%
		if(rs.next()) {
	%>
			<table>
				<tr>
					<!-- ์ˆ˜์ •๋ถˆ๊ฐ€์ง€๋งŒ, actionํŽ˜์ด์ง€์—์„œ where์ ˆ์— ๋“ค์–ด๊ฐ€์•ผํ•˜๋ฏ€๋กœ (๊ฐ’์„ ๋„˜๊ฒจ์•ผํ•˜๋ฏ€๋กœ) inputํƒœ๊ทธ -->
					<td>notice_no</td>
					<td>
						<input type="number" name="noticeNo" value="<%=rs.getInt("notice_no")%>" readonly="readonly">
					</td>
				</tr>
				<tr>
					<!-- ํŒจ์Šค์›Œ๋“œ์ž…๋ ฅ๋ž€, actionํŽ˜์ด์ง€์—์„œ where์ ˆ์— ๋“ค์–ด๊ฐ€์•ผํ•˜๋ฏ€๋กœ (๊ฐ’์„ ๋„˜๊ฒจ์•ผํ•˜๋ฏ€๋กœ) inputํƒœ๊ทธ -->
					<td>notice_pw</td>
					<td>
						<input type="password" name="noticePw">
					</td>
				</tr>
				<tr>
					<!-- ์ˆ˜์ •๊ฐ€๋Šฅ๋ž€, inputํƒœ๊ทธ -->
					<td>notice_title</td>
					<td>
						<input type="text" name="noticeTitle" value="<%=rs.getString("notice_title")%>">
					</td>
				</tr>
				<tr>
					<!-- ์ˆ˜์ •๊ฐ€๋Šฅ๋ž€, inputํƒœ๊ทธ -->
					<td>notice_content</td>
					<td>
						<textarea rows="5" cols="80" name="noticeContent"><%=rs.getString("notice_content")%></textarea>
					</td>
				</tr>
				<tr>
					<!-- ์ˆ˜์ •๋ถˆ๊ฐ€๋ž€, ์ถœ๋ ฅ๋งŒ ํ•˜๊ธฐ -->
					<td>notice_writer</td>
					<td>
						<%=rs.getString("notice_writer")%>
					</td>
				</tr>
				<tr>
					<!-- ์ˆ˜์ •๋ถˆ๊ฐ€๋ž€, ์ถœ๋ ฅ๋งŒ ํ•˜๊ธฐ -->
					<td>createdate</td>
					<td>
						<%=rs.getString("createdate")%>
					</td>
				</tr>
				<tr>
					<!-- ์ˆ˜์ •๋ถˆ๊ฐ€๋ž€, ์ถœ๋ ฅ๋งŒ ํ•˜๊ธฐ -->
					<td>updatedate</td>
					<td>
						<%=rs.getString("updatedate")%>
					</td>
				</tr>
			</table>
	<%
		}
	%>
		<div>
			<button type="submit">์ˆ˜์ •</button>
		</div>
	</form>
</body>
</html>
  • ์ˆ˜์ •ํผ์€ ์‚ญ์ œํผ๊ณผ ๋‹ค๋ฅด๊ฒŒ ๊ธฐ์กด์˜ ๊ฐ’์„ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ฃผ์–ด์•ผ ํ•˜๋ฏ€๋กœ, select๋ฌธ์„ ์ด์šฉํ•ด์•ผ ํ•œ๋‹ค! ์ฆ‰, noticeOne ํŽ˜์ด์ง€์™€ ๊ฑฐ์˜ ๋น„์Šท ํ•˜๋‹ค.

  • ์ด๋ฒˆ์— ์—๋Ÿฌ๋ฌธ๊ตฌ๊ฐ€ ์ถœ๋ ฅ๋˜๋„๋ก ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€์ ์œผ๋กœ ๋ฐฐ์› ๋‹ค. action ํŽ˜์ด์ง€์—์„œ ์—๋Ÿฌ ๋ฐœ์ƒ์‹œ msg ๊ฐ’์„ ๊ฐ€์ง€๊ณ  form ํŽ˜์ด์ง€๋กœ ๋Œ์•„์˜ค๊ฒŒ ๋˜๋Š”๋ฐ, msg ๋ฐœ์ƒ์‹œ ์—๋Ÿฌ๋ฌธ๊ตฌ๋ฅผ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋„๋ก if๋ฌธ์„ ์ž‘์„ฑํ–ˆ๋‹ค.

  • ์ˆ˜์ •๊ฐ€๋Šฅํ•œ ๋ถ€๋ถ„, ์ˆ˜์ •์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ๋ถ€๋ถ„, ์ˆ˜์ •์ด ๋ถˆ๊ฐ€๋Šฅํ•˜์ง€๋งŒ actionํŽ˜์ด์ง€์— ๊ฐ’์„ ๋„˜๊ฒจ์•ผํ•˜๋Š” ๋ถ€๋ถ„ ๋“ฑ ์ž˜ ๊ตฌ๋ถ„ํ•ด์„œ inputํƒœ๊ทธ๋ฅผ ์ž‘์„ฑํ•˜๊ฑฐ๋‚˜ ๋‹จ์ˆœ ์ถœ๋ ฅ๋งŒ ํ•˜๋„๋ก ํ•œ๋‹ค.

๐Ÿ“ ๊ฒฐ๊ณผ

notice_no๋Š” ์ˆ˜์ •์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. (ํ™•์ธ์šฉ)
notice_pw๋Š” ์ˆ˜์ •์šฉ์ด ์•„๋‹ˆ๋ผ action ํŽ˜์ด์ง€์—์„œ update ์‹คํ–‰์‹œ where์ ˆ์— ์‚ฌ์šฉ๋  ๊ฐ’์ด๋ฏ€๋กœ value๋ฅผ ๋‘์ง€ ์•Š๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์ž…๋ ฅํ•˜๋„๋ก ํ•œ๋‹ค.
notice_title๊ณผ notice_content๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ˆ˜์ •ํ•˜๋Š”(update ๋˜๋Š”) ๊ณณ์ด๋ฏ€๋กœ ์ˆ˜์ • ์ „ ์›๋ž˜์˜ ๊ฐ’์„ ๋ณด์—ฌ์ฃผ๊ณ  (value๋ฅผ ์ฃผ๊ณ ) ์ˆ˜์ •์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•œ๋‹ค.
๊ทธ ๋ฐ–์— ์ˆ˜์ •๋„ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ณ  action ํŽ˜์ด์ง€์—์„œ ์“ฐ์ด์ง€ ์•Š๋Š” ๊ฐ’๋“ค์€ ํ™•์ธ์šฉ์œผ๋กœ ๋‹จ์ˆœ ์ถœ๋ ฅ๋งŒ ๋˜๋„๋ก ํ–ˆ๋‹ค.

๐Ÿ“Œ updateNoticeAction.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");
	
	//์œ ํšจ์„ฑ ๊ฒ€์‚ฌ (1)
	// noticNo๊ฐ€ null์ด๋ฉด formํŽ˜์ด์ง€๋กœ ๊ฐˆ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ listํŽ˜์ด์ง€๋กœ ๋ฆฌ๋‹ค์ด๋ ‰์…˜
	if(request.getParameter("noticeNo") == null) {
		response.sendRedirect("./noticeList.jsp");
		return; // ์ฝ”๋“œ์ง„ํ–‰์ข…๋ฃŒ
	}

	// ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ (2)
	// null ์ด๊ฑฐ๋‚˜ ๊ณต๋ฐฑ์ธ ๊ฒƒ์—๋”ฐ๋ผ ์—๋Ÿฌ๋ฉ”์„ธ์ง€(msg) ๋ถ„๊ธฐ
	String msg = null;
	if(request.getParameter("noticeTitle") == null
			|| request.getParameter("noticeTitle").equals("")) {
			msg = "noticeTitle is required";
	} else if(request.getParameter("noticeContent") == null
			|| request.getParameter("noticeContent").equals("")) {
			msg = "noticeContent is required";
	} else if(request.getParameter("noticePw") == null
			|| request.getParameter("noticePw").equals("")) {
			msg = "noticePw is required";
	}
	System.out.println("updateNoticeAction msg: " + msg); // ๋””๋ฒ„๊น…
	
	// msg ๋ฐœ์ƒ ์‹œ ์ˆ˜์ •ํผ ํŽ˜์ด์ง€๋กœ ๋ฆฌ๋‹ค์ด๋ ‰์…˜ // msg๋„ ์ถœ๋ ฅ๋˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ™์ด ๋„˜๊ฒจ์ค€๋‹ค
	if(msg != null) {
		response.sendRedirect("./updateNoticeForm.jsp?noticeNo=" + request.getParameter("noticeNo") + "&msg=" + msg);
		return; // ์ฝ”๋“œ์ง„ํ–‰์ข…๋ฃŒ!!!!!!!
	}
	
	// null ์ด๊ฑฐ๋‚˜ ๊ณต๋ฐฑ์ด ์•„๋‹ ๊ฒฝ์šฐ
	// ๊ฐ’ ๋ณ€์ˆ˜์— ๋ฐ›๊ธฐ (ํ˜•๋ณ€ํ™˜)
	int noticeNo = Integer.parseInt(request.getParameter("noticeNo")); // intํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜
	String noticePw = request.getParameter("noticePw");
	String noticeTitle = request.getParameter("noticeTitle");
	String noticeContent = request.getParameter("noticeContent");
	
	// ๋””๋ฒ„๊น…
	// ์–ด๋Š ํŽ˜์ด์ง€์˜ ์–ด๋–ค ๋””๋ฒ„๊น…์ธ์ง€๋„ ์ž˜ ์ ์–ด์ฃผ๊ธฐ
	System.out.println("updateNoticeAction noticeNo: " + noticeNo);
	System.out.println("updateNoticeAction noticePw: " + noticePw);
	System.out.println("updateNoticeAction noticeTitle: " + noticeTitle);
	System.out.println("updateNoticeAction noticeContent: " + noticeContent);
	
	// 1) ๋“œ๋ผ์ด๋ฒ„ ๋กœ๋”ฉ
	Class.forName("org.mariadb.jdbc.Driver"); 
				
	// 2) mariadb ์„œ๋ฒ„์— ์ ‘์†, ์ ‘์† ์œ ์ง€
	Connection conn = DriverManager.getConnection("jdbc:mariadb://127.0.0.1:3306/diary","****","****");
		
	// 3) ์ฟผ๋ฆฌ ์ƒ์„ฑ ํ›„ ์‹คํ–‰
	// UPDATE notice SET notice_title=? , notice_content=? , updatedate=now() WHERE notice_no=? AND notice_pw=?
	String sql = "UPDATE notice SET notice_title=? , notice_content=? , updatedate=now() WHERE notice_no=? AND notice_pw=?";
	PreparedStatement stmt = conn.prepareStatement(sql);
	// ? ์ด 4๊ฐœ
	stmt.setString(1, noticeTitle);
	stmt.setString(2, noticeContent);
	stmt.setInt(3, noticeNo); // noticeNo๋Š” intํƒ€์ž…
	stmt.setString(4, noticePw);
	System.out.println("updateNoticeAction sql: " + stmt); // ๋””๋ฒ„๊น…
	
	// ์ฟผ๋ฆฌ๊ฐ€ ์ž˜ ์‹คํ–‰๋˜์—ˆ๋Š”์ง€ ํ™•์ธ
	int row = stmt.executeUpdate(); // ์ˆ˜์ • ์„ฑ๊ณต์‹œ 1, ์‹คํŒจ์‹œ 0
	System.out.println("updateNoticeAction row: " + row);
	
	// ์ˆ˜์ • ์„ฑ๊ณต ์œ ๋ฌด์— ๋”ฐ๋ผ ๋ฆฌ๋‹ค์ด๋ ‰์…˜
	// = ์ฟผ๋ฆฌ ์‹คํ–‰ ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ ํŽ˜์ด์ง€(View)๋ฅผ ๋ถ„๊ธฐํ•œ๋‹ค
	if(row == 0) {
		response.sendRedirect("./updateNoticeForm.jsp?noticeNo="
            +request.getParameter("noticeNo")
            +"&msg=incorrect noticePw");
   	} else if(row == 1) {
      response.sendRedirect("./noticeOne.jsp?noticeNo="+noticeNo);
  	} else {
      // update๋ฌธ ์‹คํ–‰์„ ์ทจ์†Œ(rollback)ํ•ด์•ผ ํ•œ๋‹ค
      System.out.println("error row๊ฐ’ : "+row);
 	}

%>
  • ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ(1) : noticeNo๊ฐ€ null์ผ ๊ฒฝ์šฐ๋ฅผ ๋”ฐ๋กœ ๋ถ„๊ธฐํ•˜์ง€ ์•Š์œผ๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๋ฆฌ๋‹ค์ด๋ ‰์…˜์„ "./updateNoticeForm.jsp?noticeNo=" + request.getParameter("noticeNo")" ๋กœ ์ฃผ๊ฒŒ๋˜๋Š”๋ฐ ์ด๋•Œ, noticeNo๊ฐ€ Stringํƒ€์ž…(๋ฌธ์ž์—ด)์ธ "null"๋กœ ๋“ค์–ด๊ฐ€ form ํŽ˜์ด์ง€์˜ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ์— ๊ฑธ๋ฆฌ์ง€ ์•Š๊ฒŒ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋”ฐ๋ผ์„œ, list ํŽ˜์ด์ง€๋กœ ์ •์ƒ์ ์œผ๋กœ ๊ฐˆ ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค.

  • ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ(2) : ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ์— ๊ฑธ๋ ค form ํŽ˜์ด์ง€๋กœ ๋Œ์•„๊ฐˆ ๋•Œ, ์–ด๋–ค ๊ฐ’์ด null์ด๊ฑฐ๋‚˜ ๊ณต๋ฐฑ์ด์—ˆ๋Š”์ง€ ์‚ฌ์šฉ์ž์—๊ฒŒ ์•Œ๋ ค์ฃผ๋Š” ์—๋Ÿฌ๋ฌธ๊ตฌ(msg)๋ฅผ ์ค„ ์ˆ˜ ์žˆ๋„๋ก if๋ฌธ์„ ์ž‘์„ฑํ–ˆ๋‹ค. ๋ฆฌ๋‹ค์ด๋ ‰์…˜์‹œ msg์˜ ๊ฐ’์„ ๊ฐ™์ด ๋„˜๊ฒจ์ค€๋‹ค.

  • update๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ž…๋ ฅ๋œ ํŒจ์Šค์›Œ๋“œ์˜ ๊ฐ’์— ๋”ฐ๋ผ ์ผ์น˜ํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ(row == 0) ์‚ญ์ œ๊ฐ€ ์‹คํŒจ๋˜๋Š” ๋ถ„๊ธฐ๊ฐ€ ์ƒ๊ฒผ๋‹ค. ์ด๋•Œ ํŽ˜์Šค์›Œ๋“œ๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์—๋Ÿฌ๋ฌธ๊ตฌ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๊ฐ™์ด ๋„˜๊ฒจ ๋ฆฌ๋‹ค์ด๋ ‰์…˜ํ•œ๋‹ค. ์ •์ƒ์ ์œผ๋กœ ์ˆ˜์ •๋˜์—ˆ์„ ๊ฒฝ์šฐ (row == 1) ์ˆ˜์ •๋œ ํŽ˜์ด์ง€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋„๋ก noticeOneํŽ˜์ด์ง€๋กœ ๋ฆฌ๋‹ค์ด๋ ‰์…˜.

๐Ÿ’ก ๊ณผ์ œ

storeํŽ˜์ด์ง€์—๋„ ์ง์ ‘ update ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•ด๋ณด์•˜๋‹ค. ์ง€๋‚œ ์‹œ๊ฐ„์— ์ถ”๊ฐ€ํ•œ ์ˆ˜์ • aํƒœ๊ทธ๋ฅผ ํด๋ฆญํ•˜๋ฉด updateStoreForm.jsp ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•œ๋‹ค.


๐Ÿ“Œ updateStoreForm.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" %>
<%@ page import = "java.sql.ResultSet" %> <!-- select ํ•ด์•ผํ•˜๋ฏ€๋กœ rs์‚ฌ์šฉ -->
<%
	// ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ
	// null์ด๊ฑฐ๋‚˜ ๊ณต๋ฐฑ์ผ ๊ฒฝ์šฐ ๋ฆฌ๋‹ค์ด๋ ‰์…˜
	if(request.getParameter("storeNo") == null) {
		response.sendRedirect("./storeList.jsp");
		// ๋Œ์•„๊ฐˆ ์ฃผ์†Œ ์•Œ๋ ค์ฃผ๊ธฐ
		return;
		// ์ฝ”๋“œ์ง„ํ–‰์ข…๋ฃŒ // ๋ฐ˜ํ™˜๊ฐ’์„ ๋„˜๊ธธ๋•Œ
	}

	// null์ด ์•„๋‹ ๊ฒฝ์šฐ ๋ณ€์ˆ˜์— ๊ฐ’ ๋„ฃ๊ธฐ
	int storeNo = Integer.parseInt(request.getParameter("storeNo")); // intํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜
	// ๋””๋ฒ„๊น…
	System.out.println("updateStoreForm storeNo: " + storeNo);
	
	// 1) ๋“œ๋ผ์ด๋ฒ„๋กœ๋”ฉ
	Class.forName("org.mariadb.jdbc.Driver");
	// 2) db ์„œ๋ฒ„ ์—ฐ๊ฒฐ
	Connection conn = DriverManager.getConnection("jdbc:mariadb://127.0.0.1:3306/homework0419","****","****");
	// 3) ์ฟผ๋ฆฌ ์ž‘์„ฑ
	// ํ•ด๋‹น no์— ๋งž๋Š” ํŽ˜์ด์ง€ ์ถœ๋ ฅ, where์ ˆ ์‚ฌ์šฉ
	String sql = "select * from store where store_no=?";
	PreparedStatement stmt = conn.prepareStatement(sql);
	// ์ฒซ๋ฒˆ์งธ ?์— storeNo์„ set
	stmt.setInt(1, storeNo);
	System.out.println("updateStoreForm sql: " + stmt); // ๋””๋ฒ„๊น…
	ResultSet rs = stmt.executeQuery();
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>updateStoreForm.jsp</title>
<style>
    .center {text-align: center;}
</style>
<!-- ๋ถ€ํŠธ์ŠคํŠธ๋žฉ5 ์‚ฌ์šฉ -->
<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>
	<h1 class="center">๊ฒŒ์‹œ๊ธ€ ์ˆ˜์ •&#127869;</h1>
	<div class="center text-bg-danger" ><!-- actionํŽ˜์ด์ง€์—์„œ ๋ฐ˜ํ™˜๋œ ์—๋Ÿฌ๋ฌธ๊ตฌ ์ถ”๊ฐ€ -->
		<%
			if(request.getParameter("msg") != null) {
		%>
				<%=request.getParameter("msg") %>
		<%
			}
		%>
	</div>
	<div class="container mt-3">
	<form action = "./updateStoreAction.jsp" method="post">
		<%
			if(rs.next()) {
		%>
				<table class="table table-bordered">
					<tr><!-- ์ˆ˜์ •๋ถˆ๊ฐ€, actionํŽ˜์ด์ง€์—์„œ where์ ˆ์— ์‚ฌ์šฉํ•ด์•ผํ•˜๋ฏ€๋กœ inputํƒœ๊ทธ -->
						<td>๊ธ€๋ฒˆํ˜ธ</td>
						<td>
							<input type="number" name="storeNo" value="<%=rs.getInt("store_no")%>" readonly="readonly" class="form-control">
						</td>
					</tr>
					<tr><!-- ํŒจ์Šค์›Œ๋“œ์ž…๋ ฅ๋ž€, actionํŽ˜์ด์ง€์—์„œ where์ ˆ์— ์‚ฌ์šฉํ•ด์•ผํ•˜๋ฏ€๋กœ inputํƒœ๊ทธ -->
						<td>๋น„๋ฐ€๋ฒˆํ˜ธ</td>
						<td>
							<input type="password" name="storePw">
						</td>
					</tr>
					<tr><!-- ์ˆ˜์ •๊ฐ€๋Šฅ๋ž€, inputํƒœ๊ทธ -->
						<td>์‹๋‹น์ด๋ฆ„</td>
						<td>
							<input type="text" name="storeName" value="<%=rs.getString("store_name")%>" class="form-control">
						</td>
					</tr>
					<tr><!-- ์ˆ˜์ •๊ฐ€๋Šฅ๋ž€, inputํƒœ๊ทธ -->
						<td>์นดํ…Œ๊ณ ๋ฆฌ</td>
						<td>
							<select name="storeCategory" class="form-select">
								<option value="<%=rs.getString("store_category")%>">
									<%=rs.getString("store_category")%> <!-- ์ด๋ฏธ ์„ ํƒํ•œ ๊ฐ’ ๋ณด์—ฌ์ฃผ๊ธฐ -->
								</option>
								<option value="ํ•œ์‹">ํ•œ์‹</option>
								<option value="์ผ์‹">์ผ์‹</option>
								<option value="์ค‘์‹">์ค‘์‹</option>
							</select>
						</td>
					</tr>
					<tr><!-- ์ˆ˜์ •๊ฐ€๋Šฅ๋ž€, inputํƒœ๊ทธ -->
						<td>์ฃผ์†Œ</td>
						<td>
							<input type="text" name="storeAddress" value="<%=rs.getString("store_address")%>" class="form-control">
						</td>
					</tr>
					<tr><!-- ์ˆ˜์ •๊ฐ€๋Šฅ๋ž€, inputํƒœ๊ทธ -->
						<td>์ ์›์ˆ˜</td>
						<td>
							<input type="number" name="storeEmpCnt" value="<%=rs.getInt("store_emp_cnt")%>" class="form-control">
						</td>
					</tr>
					<tr><!-- ์ˆ˜์ •๊ฐ€๋Šฅ๋ž€, inputํƒœ๊ทธ -->
						<td>๊ฐœ์—…์ผ์ž</td>
						<td>
							<input type="date" name="storeBegin" value="<%=rs.getString("store_begin")%>" class="form-control">
						</td>
					</tr>
					<tr><!-- ์ˆ˜์ •๋ถˆ๊ฐ€๋ž€, ์ถœ๋ ฅ๋งŒ ํ•˜๊ธฐ -->
						<td>๊ธ€์ƒ์„ฑ์ผ</td>
						<td><%=rs.getString("createdate").substring(0, 10)%></td>
					</tr>
					<tr><!-- ์ˆ˜์ •๋ถˆ๊ฐ€๋ž€, ์ถœ๋ ฅ๋งŒ ํ•˜๊ธฐ -->
						<td>๊ธ€์ˆ˜์ •์ผ</td>
						<td><%=rs.getString("updatedate").substring(0, 10)%></td>
					</tr>
					<tr>
						<td colspan="2">
							<button type="submit" class="btn btn-primary">์ˆ˜์ •</button>
						</td>
					</tr>
				</table>
		<%
			}
		%>
	</form>
	</div>
</body>
</html>
  • select ํƒœ๊ทธ๋ฅผ ์ด์šฉํ•œ ๋ถ€๋ถ„์€ ๋ฏธ๋ฆฌ ์„ ํƒํ•œ ๊ฐ’์„ ์ถ”๊ฐ€ํ•ด์„œ ๋ณด์—ฌ์ฃผ์—ˆ๋‹ค. ์›๋ž˜ ์›ํ–ˆ๋˜ ๋ถ€๋ถ„์€ ๋ฏธ๋ฆฌ ์„ ํƒํ•œ ๊ฐ’์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ, ํ•œ์‹/์ผ์‹/์ค‘์‹ ์ค‘ ์„ ํƒํ–ˆ๋˜ ๊ฐ’์„ selected ํ•˜๋Š” ๊ฒƒ์ด์—ˆ๋‹ค. ์ˆ˜์ •ํผ์—์„œ ์„ ํƒ๋œ ๊ฐ’์„ ์ค‘๋ณต์œผ๋กœ ํ‘œ์‹œ๋˜๋Š” ๊ฒƒ์ด ์‹ซ์—ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๐Ÿ˜ฅ ์ด ๋ถ€๋ถ„์€ ๋” ๊ณ ๋ฏผํ•ด๋ณด๊ณ  ์ถ”ํ›„์— ์ˆ˜์ •์˜ˆ์ • ๐Ÿค”

  • (23.04.24 ์ถ”๊ฐ€) if๋ฌธ ์„ ํ™œ์šฉํ•˜๋ฉด ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜๋‹ค!! if๋ฌธ์„ ์ด์šฉํ•˜๋ฉด ์ƒ๊ฐ๋ณด๋‹ค ๋‹จ์ˆœํ•˜๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์˜€๋‹ค๐Ÿ˜… equals ๋ฉ”์„œ๋“œ ์ด์šฉํ•ด์ฃผ๋Š” ๊ฒƒ ์žŠ์ง€ ๋ง๊ธฐ!

<select name="storeCategory" class="form-select"> <!-- ์ด์ „์— ์„ ํƒ๋œ ๊ฐ’ selected ๋œ ์ƒํƒœ๋กœ ๋ณด์—ฌ์ฃผ๊ธฐ -->
	<option <%if(rs.getString("store_category").equals("ํ•œ์‹")){%> selected <%}%>> ํ•œ์‹ </option>
	<option <%if(rs.getString("store_category").equals("์ผ์‹")){%> selected <%}%>> ์ผ์‹ </option>
	<option <%if(rs.getString("store_category").equals("์ค‘์‹")){%> selected <%}%>> ์ค‘์‹ </option>
</select>

๐Ÿ“ ๊ฒฐ๊ณผ


๐Ÿ“Œ updateStoreAction.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");

	// ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ (1)
	// storeNo๊ฐ€ null์ด๋ฉด formํŽ˜์ด์ง€๋กœ ๊ฐˆ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ listํŽ˜์ด์ง€๋กœ ๋ฆฌ๋‹ค์ด๋ ‰์…˜
	if(request.getParameter("storeNo") == null) {
		response.sendRedirect("./storeList.jsp");
		return; // ์ฝ”๋“œ์ง„ํ–‰์ข…๋ฃŒ
	}

	// ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ (2)
	// null ์ด๊ฑฐ๋‚˜ ๊ณต๋ฐฑ์ธ ๊ฒƒ์—๋”ฐ๋ผ ์—๋Ÿฌ๋ฉ”์„ธ์ง€(msg) ๋ถ„๊ธฐ
	// storeCategory๋Š” selectํƒœ๊ทธ๋กœ option์— null๊ฐ’์„ ์ค€ ๊ฒƒ์ด ์—†์œผ๋ฏ€๋กœ ์ƒ๋žต
	String msg = null;
	if(request.getParameter("storeName") == null
			|| request.getParameter("storeName").equals("")) {
		msg = "storeName is required";
	} else if(request.getParameter("storeAddress") == null
			|| request.getParameter("storeAddress").equals("")) {
		msg = "storeAddress is required";
	} else if(request.getParameter("storeEmpCnt") == null
			|| request.getParameter("storeEmpCnt").equals("")) {
		msg = "storeEmpCnt is required";
	} else if(request.getParameter("storeBegin") == null
			|| request.getParameter("storeBegin").equals("")) {
		msg = "storeBegin is required";		
	} else if(request.getParameter("storePw") == null
			|| request.getParameter("storePw").equals("")) {
		msg = "storePw is required";
	}
	// ์—๋Ÿฌ๋ฉ”์„ธ์ง€(msg) ๋””๋ฒ„๊น…
	System.out.println("updateNoticeAction msg: " + msg);
	
	// msg ๋ฐœ์ƒ ์‹œ ์ˆ˜์ •ํผ ํŽ˜์ด์ง€๋กœ ๋ฆฌ๋‹ค์ด๋ ‰์…˜ // formํŽ˜์ด์ง€์— msg๋ฅผ ์ถœ๋ ฅํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ™์ด ๋„˜๊ฒจ์ค€๋‹ค
	if(msg != null) {
		response.sendRedirect("./updateStoreForm.jsp?storeNo=" + request.getParameter("storeNo") + "&msg=" + msg);
		return; // ์ฝ”๋“œ์ง„ํ–‰์ข…๋ฃŒ ๊ผญ ํ•ด์ฃผ๊ธฐ!
	}
	
	// null ์ด๊ฑฐ๋‚˜ ๊ณต๋ฐฑ์ด ์•„๋‹ ๊ฒฝ์šฐ
	// ๋ณ€์ˆ˜์— ๊ฐ’ ๋„ฃ๊ธฐ (ํ˜•๋ณ€ํ™˜)
	int storeNo = Integer.parseInt(request.getParameter("storeNo")); // intํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜
	String storeName = request.getParameter("storeName");
	String storeCategory = request.getParameter("storeCategory");
	String storeAddress = request.getParameter("storeAddress");
	int storeEmpCnt = Integer.parseInt(request.getParameter("storeEmpCnt")); // intํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜
	String storeBegin = request.getParameter("storeBegin");
	String storePw = request.getParameter("storePw");
	
	// ๊ฐ’์ด ์ •์ƒ์ ์œผ๋กœ ๋„˜์–ด์™”๋Š”์ง€ ๋””๋ฒ„๊น…
	System.out.println("updateStoreAction storeNo: " + storeNo);
	System.out.println("updateStoreAction storeName: " + storeName);
	System.out.println("updateStoreAction storeCategory: " + storeCategory);
	System.out.println("updateStoreAction storeAddress: " + storeAddress);
	System.out.println("updateStoreAction storeEmpCnt: " + storeEmpCnt);
	System.out.println("updateStoreAction storeBegin: " + storeBegin);
	System.out.println("updateStoreAction storePw: " + storePw);
	
	// 1) ๋“œ๋ผ์ด๋ฒ„ ๋กœ๋”ฉ
	Class.forName("org.mariadb.jdbc.Driver"); 
	// 2) mariadb ์„œ๋ฒ„์— ์ ‘์†, ์ ‘์† ์œ ์ง€
	Connection conn = DriverManager.getConnection("jdbc:mariadb://127.0.0.1:3306/homework0419","****","****");
	// 3) ์ฟผ๋ฆฌ ์ž‘์„ฑ
	// updateํ•  ๋‚ด์šฉ: storeName, storeCategory, storeAddress, storeEmpCnt, storeBegin, updatedate
	// where์— ๋“ค์–ด๊ฐˆ ๋‚ด์šฉ: storeNo, storePw
	// UPDATE store SET store_name=?, store_category=?, store_address=?, store_emp_cnt=?, store_begin=?, updatedate=now() WHERE store_no=? AND store_pw=?
	String sql = "UPDATE store SET store_name=?, store_category=?, store_address=?, store_emp_cnt=?, store_begin=?, updatedate=now() WHERE store_no=? AND store_pw=?";
	PreparedStatement stmt = conn.prepareStatement(sql);
	// ๋ฌผ์Œํ‘œ ์ด 7๊ฐœ (1~7)
	stmt.setString(1, storeName);
	stmt.setString(2, storeCategory);
	stmt.setString(3, storeAddress);
	stmt.setInt(4, storeEmpCnt);
	stmt.setString(5, storeBegin);
	stmt.setInt(6, storeNo);
	stmt.setString(7, storePw);
	// sql์ด ์ž˜ ์ž‘์„ฑ๋˜์—ˆ๋Š”์ง€ ๋””๋ฒ„๊น…
	System.out.println("updateStoreAction sql: " + stmt);
	
	// ์ฟผ๋ฆฌ๊ฐ€ ์ž˜ ์‹คํ–‰๋˜์—ˆ๋Š”์ง€ ํ™•์ธ
	int row = stmt.executeUpdate(); // ์„ฑ๊ณต์‹œ 1, ์‹คํŒจ์‹œ 0
	System.out.println("updateStoreAction row: " + row);
	
	// if๋ฌธ์œผ๋กœ ์ˆ˜์ • ์„ฑ๊ณต ์œ ๋ฌด์— ๋”ฐ๋ผ ๋ณด์—ฌ์ค„ ํŽ˜์ด์ง€(view)๋ฅผ ๋ถ„๊ธฐ
	if(row == 0) { // ํŒจ์Šค์›Œ๋“œ๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š์•„์„œ ์ˆ˜์ • ์‹คํŒจ // ํŒจ์Šค์›Œ๋“œ๊ฐ€ ๊ณต๋ฐฑ์ด๊ฑฐ๋‚˜ null์ธ ๊ฒฝ์šฐ๋Š” ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ์—์„œ ๊ฑธ๋Ÿฌ์ง€๋ฏ€๋กœ 
		msg = "incorrect noticePw";
		response.sendRedirect("./updateStoreForm.jsp?storeNo=" + storeNo +"&msg=" + msg);
		// ์ˆ˜์ •ํผ์œผ๋กœ ๋ฆฌ๋‹ค์ด๋ ‰์…˜ // ํŒจ์Šค์›Œ๋“œ๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š์•˜๋‹ค๋Š” msg๋ฅผ ๊ฐ™์ด ๋ณด๋‚ด์ค€๋‹ค
	} else if(row == 1) { // ์ •์ƒ์ ์œผ๋กœ ์ˆ˜์ • ์™„๋ฃŒ
		response.sendRedirect("./storeOne.jsp?storeNo=" + storeNo);
		// ์ˆ˜์ •๋œ ๊ฒŒ์‹œ๊ธ€ ํ™•์ธ์„ ์œ„ํ•ด ์ƒ์„ธ ํŽ˜์ด์ง€๋กœ ๋ฆฌ๋‹ค์ด๋ ‰์…˜
	}
%>

๐Ÿ“ ๊ฒฐ๊ณผ
msg ๋ฐœ์ƒ์‹œ form ํŽ˜์ด์ง€


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

์˜ค๋Š˜์€ ์ˆ˜์ •๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•๋งŒ ๋ฐฐ์› ์ง€๋งŒ, ์ถ”๊ฐ€์ ์œผ๋กœ ๋” ์„ธ๋ฐ€ํ•˜๊ฒŒ ๋ฆฌ๋‹ค์ด๋ ‰์…˜์„ ๋ถ„๊ธฐํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ msg๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๊ฒƒ ๋“ฑ ์กฐ๊ธˆ๋” ๋””ํ…Œ์ผํ•œ ๊ตฌํ˜„์„ ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. select ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ–ˆ์„์‹œ์— form ํŽ˜์ด์ง€์—์„œ ์„ ํƒํ•œ ๊ฐ’์ด selected๋œ ์ƒํƒœ๋กœ ์ถœ๋ ฅ์ด ๊ฐ€๋Šฅํ•œ ๋ฐฉ๋ฒ•์ด ์žˆ์„์ง€ ๋” ์ฐพ์•„๋ด์•ผ๊ฒ ๋‹ค! ๐Ÿค”


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

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