이번에는 게시글 삭제하는 delete.jsp파일과 delete_ok.jsp파일을 만들어보겠습니다.

간단히 흐름을 보자면

글삭제 버튼을 누를시 비밀번호를 입력하게 되고 비밀번호가 맞다면 글삭제, 틀리면 다시 입력하는 화면으로 가게됩니다.


우선 delete.jsp 와 delete_ok.jsp 파일을 생성합니다.

그리고 내용을 입력하기전에 view.jsp파일을 열어서 버튼에 링크를 걸겠습니다.


<input type=button value="삭제" OnClick="window.location='delete.jsp?idx=<%=idx%>'">


OnClick부터 추가를 시켜놓습니다. 글삭제도 idx값이 필요하기 때문에 idx값을 Get방식으로 보냅니다.



이제 delete.jsp파일을 열고 코드를 추가시킵니다.


<%@ 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>&nbsp;</td>
      <td align="center">비밀번호</td>
      <td><input name="password" type="password" size="50" maxlength="100"></td>
      <td>&nbsp;</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>&nbsp;</td>
      <td colspan="2"><input type=button value="삭제">
       <input type=button value="취소">
      <td>&nbsp;</td>
     </tr>
    </table>
   </td>
  </tr>
 </table>
</body

</html>

코드를 실행하면


이런 화면이 나오게 됩니다.

이제 코드를 추가시키 겠습니다.


<script language = "javascript">  // 자바 스크립트 시작

function deleteCheck()
  {
   var form = document.deleteform;
   
   if( !form.password.value )
   {
    alert( "비밀번호를 적어주세요" );
    form.password.focus();
    return;
   }
 		form.submit();
  } 

</script>

자바스크립트를 추가합니다. 비밀번호를 입력안했을때에 경고창을 띄웁니다.


<%
 	int idx = Integer.parseInt(request.getParameter("idx")); 

 %>

view.jsp에서 보낸 idx값을 저장합니다.


<form name=deleteform method=post action="delete_ok.jsp?idx=<%=idx%>">

table안쪽에 form을 생성하고 delete_ok에 idx값을 포함해서 전송합니다.


<input type=button value="삭제" OnClick="javascript:deleteCheck();"

<input type=button value="취소" OnClick="javascript:history.back(-1)">

버튼에도 링크를 걸어줍니다.


delete.jsp 최종코드

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<script language = "javascript">  // 자바 스크립트 시작

function deleteCheck()
  {
   var form = document.deleteform;
   
   if( !form.password.value )
   {
    alert( "비밀번호를 적어주세요" );
    form.password.focus();
    return;
   }
 		form.submit();
  }
 </script>
 <%
 	int idx = Integer.parseInt(request.getParameter("idx"));
 %>
<!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>
<form name=deleteform method=post action="delete_ok.jsp?idx=<%=idx%>">
  <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>&nbsp;</td>
      <td align="center">비밀번호</td>
      <td><input name="password" type="password" size="50" maxlength="100"></td>
      <td>&nbsp;</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>&nbsp;</td>
      <td colspan="2"><input type=button value="삭제" OnClick="javascript:deleteCheck();">
       <input type=button value="취소" OnClick="javascript:history.back(-1)">
      <td>&nbsp;</td>
     </tr>
    </table>
   </td>
  </tr>
  </form>
 </table>
</body

</html>



이번엔 delete_ok.jsp파일을 열고 소스를 추가시킵니다.

delete_ok는 html내용이 필요없기 때문에 바로 소스 설명들어가겠습니다.


<%@ page import="java.sql.*"%>

SQL문을 사용하기 위한 import


<% request.setCharacterEncoding("euc-kr"); Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String url = "jdbc:odbc:board2"; String id = ""; String pass = ""; String password = null; int idx = Integer.parseInt(request.getParameter("idx")); String passw = request.getParameter("password"); try{ 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); 

   }

파라미터값을 한글로 받아오고

디비를 연결하고

idx값을 받아오고

delete.jsp에서 입력한 비밀번호를 저장합니다.

그리고 SELECT문을 이용해서 데이터베이스에 있는 비밀번호를 가져와서 저장합니다.

passw는 delete에서 입력한 값

password는 데이터베이스에 있는 값

이제 passw 와 password를 비교하게 됩니다.


if(password.equals(passw)) { sql = "DELETE FROM board WHERE NUM=" + idx; stmt.executeUpdate(sql); %> <script language=javascript> self.window.alert("해당 글을 삭제하였습니다."); location.href="list.jsp"; </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() ); } 

%>

둘다 String타입의 값이기 때문에 비교함수 equals를 사용해서 비교를 합니다.

if문을 사용해서 조건이 참이면 delete문을 사용해서 해당 글을 삭제하고 목록으로 돌아가고

비밀번호가 틀리다면 뒤로가기로 해서 다시 비밀번호를 입력하게 합니다.


이제 저장을 하고 list.jsp를 실행시켜서 해당 글을 삭제 해보겠습니다.


비밀번호를 입력하지 않고 삭제 버튼을 눌렀을때


비밀번호가 틀렸을때


비밀번호가 맞았을때


목록에 가니 테스트2 게시글이 삭제된걸 볼 수 있습니다.




delete_ok.jsp 최종코드

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ page import="java.sql.*"%>  
			
<%
	request.setCharacterEncoding("euc-kr");
	Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
	String url = "jdbc:odbc:board2";
	String id = "";
	String pass = "";
	String password = null;
	int idx = Integer.parseInt(request.getParameter("idx"));
	String passw = request.getParameter("password");
	
	try{
				
		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);
		 }
		 
		 if(password.equals(passw)) {
			   			
			sql = "DELETE FROM board1 WHERE NUM=" + idx;	
			stmt.executeUpdate(sql);	 
%>
  			<script language=javascript>
   				self.window.alert("해당 글을 삭제하였습니다.");
   				location.href="list.jsp";
  			</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/)


Posted by 세이나린
,