2014년 8월 21일 목요일

[chapter 6] Action (2)[자바JSP/Servlet/JDBC/MiPlatform/XPlatform/교육/JSP/서블릿강좌/Spring교육잘하는곳/자바,JSP/spring/교육추천/JSP/JDBC실무교육]


3. 게시물삭제 action(DeleteAction) 
게시물 삭제 요청을 했을 때 수행되는 action 입니다. 이전에 보았던 게시물 생성 action과 동일하게 Board class와 BoardDAO class를 이용하면 됩니다. 

public class DeleteAction extends MainAction { 

        public ActionForward doExecute( 
                ActionMapping mapping, 
                ActionForm form, 
                HttpServletRequest request, 
                HttpServletResponse response) 
                throws Exception { 

                BoardcreateForm boardcreateForm = (BoardcreateForm) form; // form parameter 
                Board board = new Board(); // Board instance 생성 
                board = boardcreateForm.getBoardValue(); // 파라메터 값들을 board instance로 복사 
                BoardDAO boardDao = new BoardDAO(); // 게시물 관련 DAO instance 생성 
                boardDao.deleteBoard(board.getSno()); // 이미 만들어 놓았던 deleteBoard method를 이용하여 게시물 삭제. 파라메터로 sno를 넘긴다. 
                return mapping.findForward("list"); // struts-config에 설정해 놓은 list 로 페이지를 이동시킨다. ( 보통 게시물 삭제하면 리스트로 이동하죠?? ) 
        } 


4. 리스트 가져오기 action(ListAction) 
게시물 리스트를 가져오는 action입니다. 파라메터로 페이지 번호가 넘어오겠죠? 그래서 해당 게시물을 list에 담아 실제 view를 담당하는 jsp로 forward하면 됩니다. 

        public ActionForward doExecute( 
                ActionMapping mapping, 
                ActionForm form, 
                HttpServletRequest request, 
                HttpServletResponse response) 
                throws Exception { 
                ListForm listForm = (ListForm) form; // parameter 
                BoardDAO boardDao = new BoardDAO(); // dao 
                listForm.setBoardList(boardDao.getBoardList(listForm.getPage_num())); // listform 소스는 바로 밑에 추가 하도록 하겠음. board dao에서 getBoardList method에 페이지 번호를 넘겨주고, 결과를 list로 받아서 listform에 저장시키는 부분 
                listForm.setPageNavigation(boardDao.getPageNavigation(listForm.getPage_num())); // 페이지 번호를 넘겨서 페이지 네비게이션 부분을 listform에 저장시키는 부분 
                
                return mapping.findForward("result"); // result는 앞에서 봣던 list페이지로 가는것과 동일하다. 
        } 


* listform 소스 

public class ListForm extends ActionForm { 

        private int page_num = 1; 
        private String pageNavigation; 
        List boardList = null; // 게시물 리스트를 이곳에 저장한다. 

        public int getPage_num() 
        { 
                return page_num; 
        } 
        
        public void setPage_num(int page_num) 
        { 
                this.page_num = page_num; 
        } 
        
        public List getBoardList() 
        { 
                return boardList; 
        } 
        
        public void setBoardList(List boardList) 
        { 
                this.boardList = boardList; 
        } 
        
        public String getPageNavigation() 
        { 
                return pageNavigation; 
        } 
        
        public void setPageNavigation(String pagenavi) 
        { 
                this.pageNavigation = pagenavi; 
        } 



5. 답글저장 action(ReplyitAction) 
게시물 저장하는 것과 동일하다. 단지 답글이라는 것만 다를 뿐이다. 답글에 대한 정보만 파라메터에 추가 된다. 하지만 소스상으로는 게시물 생성과 동일하다. 왜냐하면 답글이라는 정보는 파라메터로 넘어오는데, 파라메터는 어짜피 form에 저장되어 신경쓰지 않아도 되기 때문이다. 이렇게 성격이 비슷한 것들은 dispatchAction으로 묶어서 사용하면 소스중복을 줄일 수 있다. 


public class ReplyitAction extends MainAction { 
        public ActionForward doExecute( 
                ActionMapping mapping, 
                ActionForm form, 
                HttpServletRequest request, 
                HttpServletResponse response) 
                throws Exception { 
                BoardcreateForm boardcreateForm = (BoardcreateForm) form; 
                Board board = new Board(); 
                board = boardcreateForm.getBoardValue(); 
                BoardDAO boardDao = new BoardDAO(); 
                boardDao.createBoard(boardcreateForm.getBoardValue()); 
                return mapping.findForward("list");                
        } 


6. 글 수정한것 저장하기 action(UpdateitAction) 

public class UpdateitAction extends MainAction { 

        public ActionForward doExecute( 
                ActionMapping mapping, 
                ActionForm form, 
                HttpServletRequest request, 
                HttpServletResponse response) 
                throws Exception { 
                BoardcreateForm boardcreateForm = (BoardcreateForm) form; 
                BoardDAO boardDao = new BoardDAO(); 
                boardDao.updateBoard(boardcreateForm.getBoardValue()); 
                return mapping.findForward("list"); 
        } 



7. 게시물 상세보기 action(ViewAction) 
게시물 상세 내역을 볼 때 호출하는 action이다. 특이한 점은 이전 게시물 , 다음 게시물에 대한 정보를 첨가한다는 것이다. 

public class ViewAction extends MainAction { 
        public ActionForward doExecute( 
                ActionMapping mapping, 
                ActionForm form, 
                HttpServletRequest request, 
                HttpServletResponse response) 
                throws Exception { 
                BoardcreateForm boardcreateForm = (BoardcreateForm) form; 
                Board board = new Board(); 
                BoardDAO boardDao = new BoardDAO(); 
                board = boardDao.getBoardContent(Integer.parseInt(request.getParameter("sno"))); 
                boardcreateForm.setBoardValue(board); 
                
                List navi = boardDao.getPrevNext(request.getParameter("vno")); 
                request.setAttribute("navi",navi); 
                
                return mapping.findForward("result"); 
        } 


이렇게 해서 수행 action들에 대해서 살펴보았다.




3. 게시물삭제 action(DeleteAction) 
게시물 삭제 요청을 했을 때 수행되는 action 입니다. 이전에 보았던 게시물 생성 action과 동일하게 Board class와 BoardDAO class를 이용하면 됩니다. 

public class DeleteAction extends MainAction { 

        public ActionForward doExecute( 
                ActionMapping mapping, 
                ActionForm form, 
                HttpServletRequest request, 
                HttpServletResponse response) 
                throws Exception { 

                BoardcreateForm boardcreateForm = (BoardcreateForm) form; // form parameter 
                Board board = new Board(); // Board instance 생성 
                board = boardcreateForm.getBoardValue(); // 파라메터 값들을 board instance로 복사 
                BoardDAO boardDao = new BoardDAO(); // 게시물 관련 DAO instance 생성 
                boardDao.deleteBoard(board.getSno()); // 이미 만들어 놓았던 deleteBoard method를 이용하여 게시물 삭제. 파라메터로 sno를 넘긴다. 
                return mapping.findForward("list"); // struts-config에 설정해 놓은 list 로 페이지를 이동시킨다. ( 보통 게시물 삭제하면 리스트로 이동하죠?? ) 
        } 


4. 리스트 가져오기 action(ListAction) 
게시물 리스트를 가져오는 action입니다. 파라메터로 페이지 번호가 넘어오겠죠? 그래서 해당 게시물을 list에 담아 실제 view를 담당하는 jsp로 forward하면 됩니다. 

        public ActionForward doExecute( 
                ActionMapping mapping, 
                ActionForm form, 
                HttpServletRequest request, 
                HttpServletResponse response) 
                throws Exception { 
                ListForm listForm = (ListForm) form; // parameter 
                BoardDAO boardDao = new BoardDAO(); // dao 
                listForm.setBoardList(boardDao.getBoardList(listForm.getPage_num())); // listform 소스는 바로 밑에 추가 하도록 하겠음. board dao에서 getBoardList method에 페이지 번호를 넘겨주고, 결과를 list로 받아서 listform에 저장시키는 부분 
                listForm.setPageNavigation(boardDao.getPageNavigation(listForm.getPage_num())); // 페이지 번호를 넘겨서 페이지 네비게이션 부분을 listform에 저장시키는 부분 
                
                return mapping.findForward("result"); // result는 앞에서 봣던 list페이지로 가는것과 동일하다. 
        } 


* listform 소스 

public class ListForm extends ActionForm { 

        private int page_num = 1; 
        private String pageNavigation; 
        List boardList = null; // 게시물 리스트를 이곳에 저장한다. 

        public int getPage_num() 
        { 
                return page_num; 
        } 
        
        public void setPage_num(int page_num) 
        { 
                this.page_num = page_num; 
        } 
        
        public List getBoardList() 
        { 
                return boardList; 
        } 
        
        public void setBoardList(List boardList) 
        { 
                this.boardList = boardList; 
        } 
        
        public String getPageNavigation() 
        { 
                return pageNavigation; 
        } 
        
        public void setPageNavigation(String pagenavi) 
        { 
                this.pageNavigation = pagenavi; 
        } 



5. 답글저장 action(ReplyitAction) 
게시물 저장하는 것과 동일하다. 단지 답글이라는 것만 다를 뿐이다. 답글에 대한 정보만 파라메터에 추가 된다. 하지만 소스상으로는 게시물 생성과 동일하다. 왜냐하면 답글이라는 정보는 파라메터로 넘어오는데, 파라메터는 어짜피 form에 저장되어 신경쓰지 않아도 되기 때문이다. 이렇게 성격이 비슷한 것들은 dispatchAction으로 묶어서 사용하면 소스중복을 줄일 수 있다. 


public class ReplyitAction extends MainAction { 
        public ActionForward doExecute( 
                ActionMapping mapping, 
                ActionForm form, 
                HttpServletRequest request, 
                HttpServletResponse response) 
                throws Exception { 
                BoardcreateForm boardcreateForm = (BoardcreateForm) form; 
                Board board = new Board(); 
                board = boardcreateForm.getBoardValue(); 
                BoardDAO boardDao = new BoardDAO(); 
                boardDao.createBoard(boardcreateForm.getBoardValue()); 
                return mapping.findForward("list");                
        } 


6. 글 수정한것 저장하기 action(UpdateitAction) 

public class UpdateitAction extends MainAction { 

        public ActionForward doExecute( 
                ActionMapping mapping, 
                ActionForm form, 
                HttpServletRequest request, 
                HttpServletResponse response) 
                throws Exception { 
                BoardcreateForm boardcreateForm = (BoardcreateForm) form; 
                BoardDAO boardDao = new BoardDAO(); 
                boardDao.updateBoard(boardcreateForm.getBoardValue()); 
                return mapping.findForward("list"); 
        } 



7. 게시물 상세보기 action(ViewAction) 
게시물 상세 내역을 볼 때 호출하는 action이다. 특이한 점은 이전 게시물 , 다음 게시물에 대한 정보를 첨가한다는 것이다. 

public class ViewAction extends MainAction { 
        public ActionForward doExecute( 
                ActionMapping mapping, 
                ActionForm form, 
                HttpServletRequest request, 
                HttpServletResponse response) 
                throws Exception { 
                BoardcreateForm boardcreateForm = (BoardcreateForm) form; 
                Board board = new Board(); 
                BoardDAO boardDao = new BoardDAO(); 
                board = boardDao.getBoardContent(Integer.parseInt(request.getParameter("sno"))); 
                boardcreateForm.setBoardValue(board); 
                
                List navi = boardDao.getPrevNext(request.getParameter("vno")); 
                request.setAttribute("navi",navi); 
                
                return mapping.findForward("result"); 
        } 


이렇게 해서 수행 action들에 대해서 살펴보았다.

댓글 없음:

댓글 쓰기