마지막입니다. 글 삭제하기 기능입니다.
이것도 글 수정하는 거랑 원리가 비슷합니다. 글삭제버튼을 누르게 되면 비밀번호를 입력하라고 나오는데 입력해서 맞으면 삭제하는 식입니다.
글삭제를 누르면 deleteForm.do를 실행합니다. 이것은 deleteForm.jsp를 실행합니다.
[code]
<html:form action="delete" method="POST" focus="pwd">
<table border="1" width="250">
<tr bgcolor="#7eaee9">
<td>게시물의 비밀번호를 입력하세요.</td>
</tr>
<tr>
<td>
<html:password property="pwd"/>
<html:hidden property="id" value="<%= request.getParameter("id") %>"/>
<html:submit value="확인"/>
</td>
</tr>
<tr>
<td>
<html:messages id="msg" property="invalidPwd">
<bean:write name="msg"/>
</html:messages>
</td>
</tr>
</table>
</html:form>
[/code]
pwd를 입력받고 id는 파라메터로 받은 것을 delete.do에 넘겨줍니다.
delete.do를 수행하는 action태그를 보도록 합시다.
struts-config.xml
[code]
<action path="/delete"
type="simpleboard.actions.deleteAction"
name="DynaForm"
scope="request"
validate="true"
input="/deleteForm.jsp">
</action>
[/code]
deleteAction을 수행하며 비밀번호가 맞으면 자바스크립트를 통해 삭제가 성공했다는 메시지를 띄우고 틀리면 deleteForm.jsp를 다시 실행합니다.
deleteAction을 보도록 합시다.
deleteAction.java
[code]
public class deleteAction extends Action{
public ActionForward execute( ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception{
DynaActionForm deleteForm = (DynaActionForm)form;
BoardDAO dao = new BoardDAO();
ActionMessages errors = new ActionMessages();
int id = (Integer)deleteForm.get("id");
String pwd = (String)deleteForm.get("pwd");
if (dao.CheckPwd(id, pwd)) {
dao.Delete(id);
response.setContentType("text/html; charset=euc-kr");
PrintWriter out = response.getWriter();
out.println("<script language='javascript'>");
out.println("alert('글이 삭제되었습니다.');");
out.println("location.href = \"list.do\";");
out.println("</script>");
return null;
}
else {
errors.add("invalidPwd",new ActionMessage("error.pwd.invalid"));
saveErrors(request,errors);
return mapping.getInputForward();
}
}
}
[/code]
id와 pwd를 받고, CheckPwd를 통해서 비밀번호를 체크후에 맞으면 dao의 Delete메소드를 수행한뒤 자바스크립트로 삭제되었다는 메시지를 띄운뒤 list.do로 이동합니다.
비밀번호가 틀리면 에러메시지를 추가해서 input으로 포워드합니다.
자 이제 끝났습니다.
혼자서 삽질한 느낌이 드는군요.
단 한분이라도 도움이 되었으면 좋겠습니다.