이번에는 글수정을 하는 modify.jsp 와 modify_ok.jsp 를 만들겠습니다.
글수정의 흐름을 간단하게 보자면
비밀번호를 제외한 제목,내용이 자동으로 입력되있어야 합니다.
우선 view.jsp 에 modify.jsp를 링크 시키겠습니다.
<input type=button value="수정" OnClick="window.location='modify.jsp?idx=<%=idx%>'">
파일을 생성하시고 코드를 추가시킵니다.
<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>게시판</title> </head> <body> <table> <tr> <td> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr style="background:url('img/table_mid.gif') repeat-x; text-align:center;"> <td width="5"><img src="img/table_left.gif" width="5" height="30" /></td> <td>수정</td> <td width="5"><img src="img/table_right.gif" width="5" height="30" /></td> </tr> </table> <table> <tr> <td> </td> <td align="center">제목</td> <td><input name="title" size="50" maxlength="100"></td> <td> </td> </tr> <tr height="1" bgcolor="#dddddd"><td colspan="4"></td></tr> <tr> <td> </td> <td align="center">이름</td> <td><input name="name" size="50" maxlength="50"></td> <td> </td> </tr> <tr height="1" bgcolor="#dddddd"><td colspan="4"></td></tr> <tr> <td> </td> <td align="center">비밀번호</td> <td><input type="password" password" size="50" maxlength="50"></td> <td> </td> </tr> <tr height="1" bgcolor="#dddddd"><td colspan="4"></td></tr> <tr> <td> </td> <td align="center">내용</td> <td><textarea name="memo" cols="50" rows="13"></textarea></td> <td> </td> </tr> <tr height="1" bgcolor="#dddddd"><td colspan="4"></td></tr> <tr height="1" bgcolor="#82B5DF"><td colspan="4"></td></tr> <tr align="center"> <td> </td> <td colspan="2"><input type=button value="수정"> <input type=button value="취소"> <td> </td> </tr> </table> </td> </tr> </table> </body>
</html>
코드를 실행하면
modify.jsp의 화면입니다.
이제 코드를 삽입하겠습니다.
<%@ page import="java.sql.*"%>
SQL문 사용을 위한 import
<script language = "javascript"> // 자바 스크립트 시작 function modifyCheck() { var form = document.modifyform; if( !form.password.value ) { alert( "비밀번호를 적어주세요" ); form.password.focus(); return; } if( !form.title.value ) { alert( "제목을 적어주세요" ); form.title.focus(); return; } if( !form.memo.value ) { alert( "내용을 적어주세요" ); form.memo.focus(); return; } form.submit(); }
</script>
자바스크립트 내용
<% request.setCharacterEncoding("euc-kr"); Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String url = "jdbc:odbc:board2"; String id = ""; String pass = ""; String name = ""; String password = ""; String title = ""; String memo = ""; int idx = Integer.parseInt(request.getParameter("idx")); try { Connection conn = DriverManager.getConnection(url,id,pass); Statement stmt = conn.createStatement(); String sql = "SELECT USERNAME, PASSWORD, TITLE, MEMO FROM board WHERE NUM=" + idx; ResultSet rs = stmt.executeQuery(sql); if(rs.next()){ name = rs.getString(1); password = rs.getString(2); title = rs.getString(3); memo = rs.getString(4); } rs.close(); stmt.close(); conn.close();
}catch(SQLException e) { out.println( e.toString() ); }
%>
<form name=modifyform method=post action="modify_ok.jsp?idx=<%=idx%>">
폼을 추가시키고
<table> <tr> <td> </td> <td align="center">제목</td> <td><input type=text name=title size=50 maxlength=50 value="<%=title%>"></td> <td> </td> </tr> <tr height="1" bgcolor="#dddddd"><td colspan="4"></td></tr> <tr> <td> </td> <td align="center">이름</td> <td><%=name%><input type=hidden name=name size=50 maxlength=50 value="<%=name%>"></td> <td> </td> </tr> <tr height="1" bgcolor="#dddddd"><td colspan="4"></td></tr> <tr> <td> </td> <td align="center">비밀번호</td> <td><input type=password name="password" id="pass" size=50 maxlength=50 ></td> <td> </td> </tr> <tr height="1" bgcolor="#dddddd"><td colspan="4"></td></tr> <tr> <td> </td> <td align="center">내용</td> <td><textarea name=memo cols=50 rows=13><%=memo%></textarea></td> <td> </td> </tr> <tr height="1" bgcolor="#dddddd"><td colspan="4"></td></tr> <tr height="1" bgcolor="#82B5DF"><td colspan="4"></td></tr> <tr align="center"> <td> </td> <td colspan="2"><input type="button" value="수정" OnClick="javascript:modifyCheck();"> <input type=button value="취소" OnClick="javascript:history.back(-1)"> <td> </td> </tr>
</table>
중간에 보면 이름의 경우 type=hidden이 있습니다.
이것은 파라미터값은 갖고 있지만 사용자가 수정할수 없게 하기 위함입니다. 그리고 버튼에 링크를 걸어줍니다.
이제 list.jsp를 실행시켜서 수정단계까지 가보겠습니다.
제목, 이름, 내용이 잘 입력이 되어있습니다.
이름은 수정할 수 없게 되어있구요
이제 modify_ok.jsp파일을 열어서 코드를 삽입합니다.
<%@ page import="java.sql.*"%>
SQL문을 사용하기 위한 import
<%
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String url = "jdbc:odbc:board2"; String id = ""; String pass = ""; String password = ""; try{ request.setCharacterEncoding("euc-kr"); int idx = Integer.parseInt(request.getParameter("idx")); String title = request.getParameter("title"); String memo = request.getParameter("memo"); String passw = request.getParameter("password"); Connection conn = DriverManager.getConnection(url,id,pass); Statement stmt = conn.createStatement(); String sql = "SELECT PASSWORD FROM board1 WHERE NUM=" + idx; ResultSet rs = stmt.executeQuery(sql); if(rs.next()){ password = rs.getString(1);
}
우선 modify에서 가져온 비밀번호를 저장합니다.
그리고 select문으로 비밀번호값을 가져옵니다.
if(password.equals(passw)) { sql = "UPDATE board1 SET TITLE='" + title+ "' ,MEMO='"+ memo +"' WHERE NUM=" + idx; stmt.executeUpdate(sql); %> <script language=javascript> self.window.alert("글이 수정되었습니다."); location.href="view.jsp?idx=<%=idx%>"; </script> <% rs.close(); stmt.close(); conn.close(); } else { %> <script language=javascript> self.window.alert("비밀번호를 틀렸습니다."); location.href="javascript:history.back()"; </script> <% } } catch(SQLException e) { out.println( e.toString() ); }
%>
비밀번호를 비교해서 Update문을 실행하거나 뒤로가기를 합니다. 글삭제랑 비슷한 코드이니 어려운점을 없으리라 생각됩니다.
modify_ok.jsp 최종코드
<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <%@ page import="java.sql.*"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <% Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String url = "jdbc:odbc:board2"; String id = ""; String pass = ""; String password = ""; try{ request.setCharacterEncoding("euc-kr"); int idx = Integer.parseInt(request.getParameter("idx")); String title = request.getParameter("title"); String memo = request.getParameter("memo"); String passw = request.getParameter("password"); Connection conn = DriverManager.getConnection(url,id,pass); Statement stmt = conn.createStatement(); String sql = "SELECT PASSWORD FROM board WHERE NUM=" + idx; ResultSet rs = stmt.executeQuery(sql); if(rs.next()){ password = rs.getString(1); } if(password.equals(passw)) { sql = "UPDATE board SET TITLE='" + title+ "' ,MEMO='"+ memo +"' WHERE NUM=" + idx; stmt.executeUpdate(sql); %> <script language=javascript> self.window.alert("글이 수정되었습니다."); location.href="view.jsp?idx=<%=idx%>"; </script> <% rs.close(); stmt.close(); conn.close(); } else { %> <script language=javascript> self.window.alert("비밀번호를 틀렸습니다."); location.href="javascript:history.back()"; </script> <% } } catch(SQLException e) { out.println( e.toString() ); }
%>
비밀번호를 입력하지 않았을때
비밀번호가 틀렸을때
비밀번호가 맞아서 글이 수정되었습니다.
글 내용보기로 이동을 하고 잘 수정이 되었네요
이미지출처 : 판다의 이상한 블로그(http://ssppmm.tistory.com/)
'Programming > JSP - 게시판만들기' 카테고리의 다른 글
[JSP] JSP로 게시판 만들기 - 8(페이징) (63) | 2013.01.24 |
---|---|
[JSP] JSP로 게시판 만들기 - 7(답글달기) (61) | 2013.01.24 |
[JSP] JSP로 게시판 만들기 - 5(글삭제) (7) | 2013.01.24 |
[JSP] JSP로 게시판 만들기 - 4(내용보기) (20) | 2013.01.23 |
[JSP] JSP로 게시판 만들기 - 3(글쓰기) (31) | 2013.01.23 |