마지막입니다. 글 삭제하기 기능입니다.

이것도 글 수정하는 거랑 원리가 비슷합니다. 글삭제버튼을 누르게 되면 비밀번호를 입력하라고 나오는데 입력해서 맞으면 삭제하는 식입니다.






글삭제를 누르면 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으로 포워드합니다.

자 이제 끝났습니다.
혼자서 삽질한 느낌이 드는군요.
단 한분이라도 도움이 되었으면 좋겠습니다.

 
Posted by 머드초보
,