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

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






글삭제를 누르면 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 머드초보

댓글을 달아 주세요

  1. 초보 2008.04.10 19:05  댓글주소  수정/삭제  댓글쓰기

    머드초보님홈피에서 소스코드의 표시효과에 관하여 질문드립니다.
    어덯게 하면 홈페지에 EDIT Tools처럼 번호달린 소스표시가 되는지요.

    그럼 잘 부탁드립니다.

    • 머드초보 2008.04.11 08:29  댓글주소  수정/삭제

      아네 안녕하세요 ^^
      텍스트큐브 플러그인인데요 ^^
      코드하이라이트라는 플러그인을 설치하시면 돼요 ^^
      http://gendoh.tistory.com/2510954

  2. 초보 2008.04.11 16:49  댓글주소  수정/삭제  댓글쓰기

    답변 감사합니다. ^^

  3. 유리망치 2009.04.02 16:17  댓글주소  수정/삭제  댓글쓰기

    플렉스가 아직 먼지도 모르는 초보입니다.
    참고 많이 할게요
    퍼가여

    • 머드초보 2009.04.03 23:11  댓글주소  수정/삭제

      반갑습니다^^
      저도 아직은 플렉스초보라 ^^
      근데 이 글은 Struts자료군요-_-;