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

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






글삭제를 누르면 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 신고  댓글주소  수정/삭제  댓글쓰기

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

 


글 수정하는 부분이 가장 구현하기 힘들었던 것 같습니다-_-;

구조는 수정버튼을 클릭했을 때에 id를 리턴받습니다. 그다음에 비밀번호를 입력받는 페이지로 이동합니다. 그 비밀번호를 입력해서 그 해당글의 비밀번호와 일치한지를 확인합니다.
일치하게 되면 수정하는 폼으로 이동합니다. 그 후 수정해서 글수정을 클릭하면 modifyAction을 통해 글을 수정하는 식으로 구현했습니다.


우선 글수정을 클릭했을 때 modifyConfirm.do를 실행합니다. 이것은 단순히 modifyConfirm.jsp를 실행합니다.
modifyConfirm.jsp를 보도록 합시다.

modifyConfirm.jsp
[code]
<html:form action="modifyForm" 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>
[/code]
여기서 볼 것은 id값도 넘겨줘야하기 때문에 hidden으로 id값을 처리해서 넘겨줍니다.
저기서도 value값을 그냥 id로 쓰면 안되더라구요. 그래서 getParameter메소드를 통해 넘겨줬습니다.
html:messages태그는 비밀번호가 틀리면 보여지게 되어있습니다.
여기서 확인버튼을 클릭하게 되면 modifyForm.do를 실행하게 됩니다.
modifyForm의 액션을 살펴봅시다.

struts-config.xml
[code]
<action path="/modifyForm"
                type="simpleboard.actions.modifyformAction"
                name="DynaForm"
                scope="request"
                input="/modifyConfirm.jsp">
            <forward name="success" path="/modifyForm.jsp"/>
 </action>
[/code]
modifyformAction을 수행하고 input으로 포워드하면 다시 modifyConfirm.jsp를 수행합니다.
성공으로 매핑하게 되면 modifyForm.jsp 즉 수정창으로 가는 겁니다.

modifyformAction클래스를 보도록 합시다.

modifyformAction.java
[code]
public class modifyformAction extends Action {

    public ActionForward execute(   ActionMapping mapping,
                                    ActionForm form,
                                    HttpServletRequest request,
                                    HttpServletResponse response) throws Exception{
       
        DynaActionForm modifyconfirmForm = (DynaActionForm)form;
        ActionMessages errors = new ActionMessages();
        Board board = new Board();
        BoardDAO dao = new BoardDAO();
        HttpSession session = request.getSession();
       
        int id = (Integer)modifyconfirmForm.get("id");
        String pwd = (String)modifyconfirmForm.get("pwd");
       
        if (dao.CheckPwd(id, pwd)) {
            board = dao.findBoard(id);
            session.setAttribute("board", board);
            return mapping.findForward("success");
        }
        else {
            errors.add("invalidPwd",new ActionMessage("error.pwd.invalid"));
            saveErrors(request,errors);
            return mapping.getInputForward();
        }
    }
}
[/code]
form에 있는 내용을 받아서 우선 dao의 CheckPwd를 이용해서 체크해서 비밀번호가 맞으면 현재보드내용을 찾아서 session에 저장 후 success로 포워드합니다.
비밀번호가 틀린경우에는 메시지를 추가해서 Input으로 포워드합니다.

성공했을 경우 modifyForm.jsp로 갑니다. 살펴봅시다.

modifyForm.jsp
[code]
<bean:define id="id" name="board" property="id" type="java.lang.Integer"/>
<bean:define id="name" name="board" property="name" type="java.lang.String"/>
<bean:define id="pwd" name="board" property="pwd" type="java.lang.String"/>
<bean:define id="title" name="board" property="title" type="java.lang.String"/>
<bean:define id="content" name="board" property="content" type="java.lang.String"/>

<html:form action="modify" method="POST" focus="name">
<html:hidden property="id" value="<%= id.toString() %>"/>
<table width="500" border="1">
    <tr>
        <td width="100" bgcolor="#7eaee9">등 록 자</td>
        <td width="180" align="left">&nbsp;
        <html:text property="name" size="10"
                    maxlength="10" value="<%= name %>"/>
        </td>
        <td width="100" bgcolor="#7eaee9">비밀번호</td>
        <td width="120" align="left">&nbsp;
        <html:password property="pwd" size="10"
                        maxlength="10" value="<%= pwd %>"/>
        </td>
    </tr>
    <tr>
        <td bgcolor="#7eaee9">제 목</td>
        <td colspan="4" align="left">&nbsp;
        <html:text property="title" size="30"
                    maxlength="30" value="<%= title %>"/>
        </td>
    </tr>
    <tr>
        <td bgcolor="#7eaee9">내 용</td>
        <td colspan="4" align="left">&nbsp;
        <html:textarea property="content"
                        cols="53" rows="10" value="<%= content %>"/>
        </td>
    </tr>
    <tr>
        <td colspan="4"><font color="red"><b>
            <html:messages id="msg" property="requiredName">
                <bean:write name="msg"/><br>
            </html:messages>
            <html:messages id="msg" property="requiredPwd">
                <bean:write name="msg"/><br>
            </html:messages>
            <html:messages id="msg" property="requiredTitle">
                <bean:write name="msg"/><br>
            </html:messages>
            <html:messages id="msg" property="requiredContent">
                <bean:write name="msg"/><br>
            </html:messages></b></font>
        </td>
    </tr>
    <tr>
        <td colspan="4"><html:submit value="내용수정"/></td>
    </tr>
</table>
</html:form>
[/code]
value에다가 값을 넣으려면 bean:define을 통해서 값을 정의해야합니다. 그 후에 jsp코드를 이용해서 value에 값을 넣어야지 값이 들어갑니다. 다른방법이 있을 것 같은데 이렇게 밖에 못하겠군요-_-;
form은 modify.do를 실행합니다. modifyAction을 실행합니다.
modifyAction은 writeAction과 거의 동일합니다. 그냥 글을 써서 등록하는 형식으로 하고 다른 점이 있다면 dao의 modify를 호출해서 update를 이용하고, insert는 insert sql문을 이용해서 합니다.

이렇게하면 수정하기가 끝이납니다.

오늘도 여기까지-_-;

 
Posted by 머드초보

댓글을 달아 주세요

 


이번에는 글쓰기 부분을 설명해보겠습니다.

글쓰기를 실행할 때에는 writeForm.do를 실행하게 됩니다. writeForm.jsp로 포워드합니다.
<action path="/writeForm" forward="/writeForm.jsp"/>







writeForm.jsp를 보도록 합시다.
writeForm.jsp
[code]
<table width="500" border="1">
    <tr>
        <td width="100" bgcolor="#7eaee9">등 록 자</td>
        <td width="180" align="left">&nbsp;
        <html:text property="name" size="10" maxlength="10"/></td>
        <td width="100" bgcolor="#7eaee9">비밀번호</td>
        <td width="120" align="left">&nbsp;
        <html:password property="pwd" size="10" maxlength="10"/></td>
    </tr>
    <tr>
        <td bgcolor="#7eaee9">제 목</td>
        <td colspan="4" align="left">&nbsp;
        <html:text property="title" size="30" maxlength="30"/></td>
    </tr>
    <tr>
        <td bgcolor="#7eaee9">내 용</td>
        <td colspan="4" align="left">&nbsp;
        <html:textarea property="content" cols="53" rows="10"/></td>
    </tr>
    <tr>
        <td colspan="4"><font color="red"><b>
            <html:messages id="msg" property="requiredName">
                <bean:write name="msg"/><br>
            </html:messages>
            <html:messages id="msg" property="requiredPwd">
                <bean:write name="msg"/><br>
            </html:messages>
            <html:messages id="msg" property="requiredTitle">
                <bean:write name="msg"/><br>
            </html:messages>
            <html:messages id="msg" property="requiredContent">
                <bean:write name="msg"/><br>
            </html:messages></b></font>
        </td>
    </tr>
    <tr>
        <td colspan="4"><html:submit value="글쓰기"/></td>
    </tr>
</table>
[/code]
html:form은 그냥 html태그에 있는 것과 거의 비슷한 역할을 합니다.
마지막 부분에 html:messages는 메시지중에 property값과 같은 메세지가 있으면 출력하라는 뜻입니다.
form의 action은 write.do를 수행하게 됩니다.
[code]
<action path="/write"
    type="simpleboard.actions.writeAction"
    name="DynaForm"
    scope="request"
    validate="true"
    input="/writeForm.jsp">
</action>
[/code]
write.do를 수행하면 writeAction클래스를 수행하고 만약 mapping.getInputForward();을 리턴받게 되면 writeForm.jsp를 다시 수행하라는 뜻입니다. 여기서 저 메시지를 리턴받게 되는 경우는 이름, 제목, 내용, 비번을 쓰지 않은 경우가 됩니다.

writeAction을 보도록 합시다.

writeAction.java
[code]
public class writeAction extends Action {

    public ActionForward execute(   ActionMapping mapping,
            ActionForm form,
            HttpServletRequest request,
            HttpServletResponse response) throws Exception{
       
        DynaActionForm writeForm = (DynaActionForm)form;
        ActionMessages errors = new ActionMessages();
        Board board = new Board();
        BoardDAO dao = new BoardDAO();
        int errorCount = 0;
       
        board.setName((String)writeForm.get("name"));
        board.setPwd((String)writeForm.get("pwd"));
        board.setTitle((String)writeForm.get("title"));
        board.setContent((String)writeForm.get("content"));
       
        if (board.getName().equals("")){
            errors.add("requiredName",new ActionMessage("error.name.required"));
            errorCount++;
        }
       
        if (board.getPwd().equals("")){
            errors.add(
                "requiredPwd",new ActionMessage("error.pwd.required"));
            errorCount++;
        }
       
        if (board.getTitle().equals("")){
            errors.add(
                 "requiredTitle",new ActionMessage("error.title.required"));
            errorCount++;
        }
        if (board.getContent().equals("")){
            errors.add(
                 "requiredContent",new ActionMessage("error.content.required"));
            errorCount++;
        }
       
        if (errorCount > 0){
            saveErrors(request,errors);
            return mapping.getInputForward();
        }
        dao.Insert(board);
       
        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;
    }
}
[/code]
폼으로부터 값을 받고 값이 비었으면 에러메시지를 추가하여 에러메시지가 한개라도 있으면 다시 writeForm.jsp를 실행하도록 input으로 포워드합니다.
제대로 입력이 되었으면 dao의 Insert메소드를 실행해서 삽입후에 자바스크립트코드를 보여주기 위해서 out객체를 이용해서 확인창 하나띄운뒤 list.do로 가도록 합니다. 이 때 액션으로 이동하는것이 아니라 자바스크립트 코드로 이동하도록 했습니다.
out객체를 이용해서 자바스크립트코드를 적었는데 return을 forward값으로 리턴해버리면 자바스크립트가 그냥 씹혀버립니다-_-;(이유는 모르겠습니다-_-;)

오늘도 여기까지-_-;

스트럿츠로 제작한 게시판 소스입니다.

 
Posted by 머드초보

댓글을 달아 주세요

  1. 김성운 2008.02.01 14:20 신고  댓글주소  수정/삭제  댓글쓰기

    return을 forward값으로 리턴 하면 자바스크립트가 안먹히는 이유가요..

    out.flush(); <-- 이부분이 없어서 그런거 같아요..

    직접적으로 HTML에 자바스크립트를 쓰는 부분이 없어서.

    다른분들이 보시고 참고 하셨으면 하네욤 ㅋ

  2. 지멋대루 2008.02.12 18:26 신고  댓글주소  수정/삭제  댓글쓰기

    와우!!!!!!!!!!!!!!!!!!

    엉뚱한키워드로 들어오게됬는데 제가 원하던게 딱!!!있군요~ 오호!!

    감사히 봤습니다^^

 

우선 간단히 구조를 살펴보도록 합시다.

simpleboard패키지안에 actions, controller, jdbcdriver, model이 있습니다.

actions
deleteAction클래스 - 글을 지울 때 쓰이는 액션
listAction클래스 - 글목록을 보여줄 때 쓰이는 액션
modifyAction클래스 - 글을 수정할 때 쓰이는 액션
modifyformAction클래스 - 글을 수정할 때 비밀번호를 입력해서 맞는지 확인할 때 쓰이는 액션
showAction클래스 - 글을 볼 때 쓰이는 액션
writeAction클래스 - 글을 쓸 때 쓰이는 액션

controller
KoRequestProcessor클래스 - 잘은 모르지만 한글을 가능하게 해주는 클래스입니다.

jdbcdriver
DBCInit클래스 - DB를 초기화시키는 클래스가 있습니다.

model
Board클래스 - 객체에 내용을 담을 수 있게 해주는 빈클래스입니다.
BoardDAO클래스 - write, delete, modify, getList 등 실제적으로 수행하는 메소드를 모아놓은 클래스입니다.

클래스 구조는 대충 이렇습니다.
간단합니다. 예를 들면 write.do액션이 들어오면 writeAction을 수행하는데 이 클래스 안에서 DAO를 생성해서 write메소드를 호출하는 형식으로 되어있습니다.
나머지 delete나 modify도 같은 형식으로 이루어져 있습니다.

조금 다른 list보기를 설명해보도록 하겠습니다.
struts-config에 다음과 같이 액션매핑에 액션을 정의합니다.
<action path="/list"
    type="simpleboard.actions.listAction"
    scope="request">
   <forward name="success" path="/list.jsp"/>
 </action>

list.do를 실행하면 listAction을 실행하는데 성공을 리턴하면 list.jsp를 포워드하라는 뜻입니다.

listAction을 보도록 합시다.

listAction.java
[code]
package simpleboard.actions;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.Action;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import java.util.List;
import simpleboard.model.Board;
import simpleboard.model.BoardDAO;

public class listAction extends Action {
    final int countPerPage = 10;
    public ActionForward execute(   ActionMapping mapping,
                                    ActionForm form,
                                    HttpServletRequest request,
                                    HttpServletResponse response)
                                    throws Exception{
        int currentPage;
        int totalPage;       
        String pageNum = request.getParameter("page");

        if (pageNum == null)
            pageNum = "1";
        currentPage = Integer.parseInt(pageNum);
        BoardDAO dao = new BoardDAO();

        List<Board> BoardList = dao.getList(currentPage, countPerPage);
        totalPage = dao.getTotalPage(countPerPage);

        HttpSession session = request.getSession();
        session.setAttribute("boardlist", BoardList);
        request.setAttribute("currentpage", new Integer(currentPage));
        request.setAttribute("totalpage", new Integer(totalPage));
        request.setAttribute("nextpage", new Integer(currentPage+1));
        request.setAttribute("prevpage", new Integer(currentPage-1));

        return mapping.findForward("success");
    }
}
[/code]
우선 list.do?page=숫자 형식으로 실행하는데 list.do로 실행하게되면 1로 인식을 하게 됩니다.
그리고 받은 값을 DAO의 geList에 2개의 인자를 전달합니다(현재페이지번호, 한페이지당게시물수).
현재페이지번호에 맞는 게시물들을 List에 다 받게 됩니다. 이것을 session에 저장해서 list.jsp에 출력해주는 식입니다.

그리고, 총페이지수와 다음페이지, 이전페이지 값을 전달해줘서 처음인지 끝인지를 판단할 수 있게하고 다음페이지와 이전페이지를 수행하도록 값을 넘겨줍니다.

이제 list.jsp를 보도록 합시다.

list.jsp
[code]

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>

<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld"  prefix="bean" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<
html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>심플보드에 오신 것을 환영합니다</title>
</head>
<body>
<center>
<table border="1" width="500" height="50">
    <tr>
        <td align="center" bgcolor="dddddd">간단한 게시판 (Simple Board)</td>
    </tr>
</table>
<table width=500 border="1">
    <tr bgcolor="#7eaee9" height="25">
        <th width="40" align="center">번호</th>
        <th width="380" align="center">제목</th>
        <th width="80" align="center">글쓴이</th>
    </tr>
    <logic:iterate id="list" name="boardlist">
        <tr>
            <td><bean:write name="list" property="id"/></td>
            <td><html:link page="/show.do" paramId="id" 
                        paramName="list" paramProperty="id">
                <bean:write name="list" property="title"/>
                </html:link>
            </td>
            <td><bean:write name="list" property="name"/></td>
        </tr>
    </logic:iterate>
    <tr>
        <td colspan="3">
        <logic:notEqual name="currentpage" value="1" scope="request" >
            <html:link page="/list.do" paramId="page" paramName="prevpage">
                  [이전페이지]
            </html:link>
        </logic:notEqual>
        <bean:write name="currentpage"/>
        <logic:notEqual name="currentpage" 
          value="<%= request.getAttribute("totalpage").toString() %>"
          scope="request" >
            <html:link page="/list.do" paramId="page" paramName="nextpage">
                  
[다음페이지]
             </html:link>
        </logic:notEqual>
        </td>
    </tr>
    <tr>
        <td colspan="3" align="right">
            
<html:link page="/writeForm.do">글쓰기</html:link>
       
</td>
    </tr>
</table>
<table border="1" width="500" height="28">
    <tr>
        <td align="center" bgcolor="dddddd">제작자 : 성종천(mudchobo@nate.com)</td>
    </tr>
</table>
</center>
</body>
</html>
[/code]
잘 보면 26번라인에 logic:iterate부분은 그 사이를 boardlist에 있는 수만큼 반복해서 출력하라는 것입니다. bean:write를 이용해서 값을 출력하는 것입니다.
그 다음 [다음페이지] [이전페이지] 표현 부분은 링크에다가 뒤에 paramId가 page고 nextpage값이 3이면
list.do?page=3 이라고 요청하게 되는 것입니다.

logic:notEqual은 name에 있는 값이 value값이랑 비교해서 같지 않으면 그 태그안에 있는 내용을 수행하라는 뜻입니다. 스트럿츠의 태그라이브러리가 궁금하신 분은
http://blog.naver.com/wildxing?Redirect=Log&logNo=20033916985
이 분 블로그에서 검색을 "태그라이브러리" 로 검색하면 다나옵니다. 보셔서 참조하세요.

스트럿츠의 태그라이브러리를 사용하니까 jsp코드가 매우 깔끔해집니다.
오늘은 여기까지-_-;

  1. 스트럿츠로 제작한 게시판 소스입니다.
 
Posted by 머드초보

댓글을 달아 주세요

  1. 투모우로 2007.11.11 01:14 신고  댓글주소  수정/삭제  댓글쓰기

    참말로 감사함니다.

  2. 초보 2007.12.23 08:39 신고  댓글주소  수정/삭제  댓글쓰기

    머드초보님
    저는 리스트가 null일경우를 대비하여
    listAction.java에 아래의 판단 부분을 추가하였읍니다.

    if(totalPage==0){
    request.setAttribute("totalpage", new Integer(pageNum));
    }else{
    request.setAttribute("totalpage", new Integer(totalPage));
    }

  3. 이태현 2008.01.31 22:14 신고  댓글주소  수정/삭제  댓글쓰기

    안녕하세요 머드초보님
    귀한 소스 감사합니다

    머드초보님 소스를 가지고 스트럿츠 구성을 공부중입니다

    로그인부터 게시판까지 연동중인데요(게시판의 내용은 제가 조금씩 손 보고 있습니다만)
    루트에 파일이 들어가는 부분(로그인)과 폴더를 만들어 그 하위에 파일이 들어가는 부분(게시판)을 만들고 있는데요
    폴더를 만들고 그 하위에 들어가는 파일들의 경로를 어떻게 지정해야 하는건가요


    <action path="/list"
    type="boardManager.actions.listAction" scope="request">
    <forward name="success" path="/list.jsp"/>
    </action>
    에서 list.jsp 를 호출하는데 list 파일은 webcontent/board/list.jsp 라는 구조를 가집니다
    ./board/list.jsp
    /board/list.jsp
    board.list.jsp
    다 안먹어서 어떻게 연결해야 하는지 알수가 없네요
    foxknight@nate.com 으로 답변 주시면 감사하겠습니다 (__)

    • BlogIcon 머드초보 2008.02.01 00:22 신고  댓글주소  수정/삭제

      안녕하세요!
      우선 MVC모델에서는 JSP를 직접호출하지 않습니다.
      list.do 라는 것을 요청하는 것이죠.
      그러면 그 해당액션을 보고 어디로 갈지 결정을 하는것입니다 ^^
      즉 /board/list.do를 요청하면 listAction클래스로 가는거겠죠?^^
      도움이 되셨기를 바랍니다 ^^
      우와.....이거 좀 오래된소스라서....
      이거 보고하시면 안되는데 ^^

  4. BlogIcon 유리망치 2009.03.24 18:40 신고  댓글주소  수정/삭제  댓글쓰기

    좋은 자료 퍼가여

 

저번에 어설픈 방명록, 로그인시스템에 이어 이번에도 어설픈 게시판을 제작해 보았습니다. 스트럿츠로 삽질하시는 분들에게 조금이나마 도움이 되었으면 합니다.

소스설명과 간단한 팁을 차후에 올리도록 하겠습니다-_-;(지금은 피곤해서-_-;)

게시판주소입니다.
http://mudchobo.tomeii.com/SimpleBoard/


소스파일입니다.



참고로 이클립스WTP 2.0 + 톰캣5.5 + JDK5.0 + 스트럿츠1.3.8 에서 제작했습니다.

ps. 가끔 broken pipe어쩌구 에러 뜨는데 F5무한연타하시면 뜹니다. 왜그러는지 잘모르겠습니다.
 
Posted by 머드초보

댓글을 달아 주세요

  1. 스트럿츠 초보자 2007.10.12 15:52 신고  댓글주소  수정/삭제  댓글쓰기

    db 소스는 없나요 ^^;;
    있으면 db소스도 부탁 드립니다. ^^;;

    • BlogIcon 머드초보 2007.10.12 16:53 신고  댓글주소  수정/삭제

      CREATE TABLE `Board` (
      `b_id` int(11) NOT NULL auto_increment,
      `b_name` varchar(10) NOT NULL,
      `b_pwd` varchar(10) NOT NULL,
      `b_title` varchar(30) NOT NULL,
      `b_content` mediumtext NOT NULL,
      PRIMARY KEY (`b_id`)
      ) ENGINE=MyISAM DEFAULT CHARSET=euckr AUTO_INCREMENT=85 ;

      phpmyadmin에서 직출했어요^^ 저도 db를 잘 몰라서 phpmysql에서 만든겁니다.
      db는 저게 다인데요 ^^
      뭐 별거 없는데^^
      어쨌든 열공하세요 왠만하면 다른거 보고하세요-_-;
      저거 너무 허접해서-_-;

  2. 초보 2007.12.05 21:58 신고  댓글주소  수정/삭제  댓글쓰기

    수고많습니다.
    좋은 소스 올려쥬셔서 감사합니다.
    소스를 훌터 보았는데요.
    DB 련결은 어느 부분인지 잘모르겠네요.
    지금 저는 "스트럿츠로 만든 매우 간단한 게시판"
    DB이름이 무엇인지 조차 모르겠네요.


    예를 들면 아래와 같은 부분입니다.
    ===============================================
    url=jdbc:mysql://dbaddress:3306/dbname
    ===============================================


    그럼잘 부탁드리겠습니다.

    • BlogIcon 머드초보 2007.12.05 23:07 신고  댓글주소  수정/삭제

      음 이거 제가 웹프로그래밍 처음 시작하면서 만든거라 좀 허접한데요-_-;
      우선 DB를 공부하셔야할 것 같은데요.
      DB주소는 그 DB가 설치된 주소, 즉 IP나 도메인이름이 되겠구요.
      만약 자신의 PC에 mysql를 설치했다면
      주소는 http://localhost:3306이 되겠네요.
      dbname은 그 mysql에서 db를 여러개 만들 수 있는데요.
      말그대로 db이름인데요. 음......
      자신이 설치한 db에서 create명령어로 db를 만들 수 있어요.
      만든다음에 거기에 테이블을 생성하죠.
      위에 테이블구조있죠? 그걸로 테이블을 생성한다음에
      insert로 값을 넣거나 select로 값을 조회할 수 있죠.
      db를 공부하시면 됩니다. 기본적인것은 금방 배우실 껍니다^^

    • 초보 2007.12.06 00:41 신고  댓글주소  수정/삭제

      빠른 회답,상세한설명 감사합니다.
      한가지 더 부탁하고 싶은데요.

      아래
      ===============================================
      url=jdbc:mysql://dbaddress:3306/dbname

      제가 늘사용중인 postgresql DB설정은 아래와같음니다만
      url="jdbc:postgresql://localhost:5432/testDB";
      user="postgres";
      pwd="postgres";
      ===============================================
      요부분입니다.
      샴플"SimpleBoard.zip"중 어느파일에서 설정되여있는거지 모르겠읍니다.
      제가 왕창초보라서로 소스분석이 잘안되네요.

      혹씨 "url=jdbc:mysql://dbaddress:3306/dbname"방법 이외에 다른방법으로 DB연결 시킨것인지요.

      이상, 잘부탁합니다.

    • BlogIcon 머드초보 2007.12.06 08:15 신고  댓글주소  수정/삭제

      아네 SimpleBoard/build/classes에 보시면
      pool1.jocl이라는 파일이있는데요.
      거기서 설정해주는 겁니다.
      이게 dbcp하는 방법인데요. DBCP에 관해서는요
      http://javacan.madvirus.net/main/content/read.tle?contentId=92
      여기에 친절하게 하는법까지 자세히 나타나있어요.

      참고로 iBATIS라는 프레임워크를 사용하게 된다면
      저 DBCP하는 방법보다 훨씬 쉽게 할 수 있습니다 ^^

    • 초보 2007.12.06 11:41 신고  댓글주소  수정/삭제

      역씨, 제가 생각도 못한부분이였읍니다.
      감사함니다.

    • BlogIcon 머드초보 2007.12.06 21:15 신고  댓글주소  수정/삭제

      아네 방문해주셔서 감사합니다. 그리고 관심(?)가져주셔서 감사합니다ㅠㅠ

  3. 초보 2007.12.13 12:41 신고  댓글주소  수정/삭제  댓글쓰기

    머드초보님 여기 왕초보 또 부탁하겠읍니다.
    지금 저의 PC(WindowsXP,Java5,Struts,Mysql)에서 jsp와 java소스를 UTF-8로 변경한다음 샘플을 실행한결과 글이깨집니다. DB를 본결과 올린글이 깨진상태로 등록돼이었읍니다. 인터넷을 찾아봐도 별다른 해결책을 찾질 못하고 있읍니다. 요부분에 관하여 좋은 의견 올려주시면 감사하겠읍니다.
    전에는 PC(Linux,Java5,Struts,Postgres)에서는 문제없었음니다만, 이번에 처음으로 Windows에서 Struts+Mysql개발환경을 리용하고 있읍니다.

  4. 초보 2007.12.13 12:56 신고  댓글주소  수정/삭제  댓글쓰기

    글깨지는 문제해결되였읍니다.
    금방 또 소스확인한결과 엔코드 수정이 빠뜨린곳을 발결하였읍니다.
    UTF-8로 수정하고 실행한결과 지금은 정상적으로 술술 돌아감니다.
    늘 친절하게 대응하여 주셔서 감사합니다.

  5. 초보 2007.12.16 01:40 신고  댓글주소  수정/삭제  댓글쓰기

    머드초보님 또 부탁해도 될른지요.
    저로서는 방법을 찾질 못하고 있읍니다....ㅠ.ㅠ
    지금 Paging 처리를 "[이전페이지] [1] 2 [3] [4] [다음페이지 "처럼
    링크한 페지번호를 액센에 넘길라고합니다.
    참고할수있는자료주소거나 방법을 알려주시면 감사하겠읍니다.

    • BlogIcon 머드초보 2008.01.26 17:38 신고  댓글주소  수정/삭제

      음 그거 http://localhost:8080/list.do?page=2와 같이 parameter를 넘기면 그걸 액션에서 받아서 처리를 하는 식인데요.
      그 데이터를 액션에 받을 때 2를 받으면 현재페이지가 몇인지를 계산하고 이전페이지는 현재페이지번호에 하나를 뺀거구요.
      이런식으로 구현하면 돼요.
      좋은예제가 최범균의 JSP 2.0 프로그래밍 이라는 책에 방명록 예제가 있는데 거기에 MVC형태의 방명록예제가 있을껍니다. 참조하시면 될껍니다^^

  6. 초보 2007.12.20 08:09 신고  댓글주소  수정/삭제  댓글쓰기

    해결되였음니다. 감사합니다.