글쓰기와 수정은 기본적으로 동일하다.

차이가 있다면 사용자 입력 폼을 호출할 때,

글쓰기는 빈 입력 상자들만 출력하고,

글 수정은 지정된 글번호에 대한 데이터를 조회하여

입력상자들의 초기값으로 지정하여 출력한다.


저장 처리에 있어서는 SQL문만 다를 뿐 동일하다.

즉, 폼에서는 글번호 값이 있으면 데이터를 가져오는 서비스를 호출하고

없으면 그냥 JSP파일을 호출한다.

JSP에서는 값이 없으면 텍스트 박스에 빈 값이 들어가기 때문에 새 글을 입력하게 된다.

따라서 글쓰기 컨트롤(boardForm)에

글수정 컨트롤(boardUpdate) 내용을 복사해서 다음과 같이 넣어주면 된다.

두 컨트롤을 합쳐서 글 번호(brdno) 값이 있으면 해당 데이터를 불러와서 수정으로,

없으면(null)  그냥 입력 폼을 호출하게 된다.

public String boardForm(HttpServletRequest request, ModelMap modelMap) throws Exception {
        String brdno = request.getParameter("brdno");
        if (brdno!=null) {
            boardVO boardInfo = boardSvc.selectBoardOne(brdno);
             modelMap.addAttribute("boardInfo", boardInfo);
        }
       
        return "board2/boardForm";
}

board2Ctr.java

JSP 파일은 글 수정 파일(boardUpdate.jsp)의 내용을 글쓰기(boardUpdate.jsp)에 넣어준다.

글 수정과 관련된 컨트롤과 jsp 파일은 삭제 한다.


저장 컨트롤에서도 Insert와 Update를 글번호 값(brdno) 존재 여부에 따라

다음 코드와 같이 각각 필요한 것을 호출해 준다.

public String boardSave(@ModelAttribute boardVO boardInfo) throws Exception {
       
        if (boardInfo.getBrdno()==null)
               boardSvc.insertBoard(boardInfo);
        else boardSvc.updateBoard(boardInfo);

        return "redirect:/board2List";
}

board2Ctr.java

여기에서는 두 개의 서비스를 호출했는데

if문을 서비스(board2Svc.java)에 넣어서 처리하는 것이 보다 효율적일 수 있다.

하나의 서비스에서 다른 2개의 SQL문을 상황에 따라 호출하는 것이 더 좋을 것이다.

직접 해보길 바란다.


다음과 같이 boardForm.jsp의 폼(form) 테그 method를 Post로 지정하는 것이 좋다.

<form name="form1" action="board2Save" method="post">

별도의 지정이 없는 경우 GET 이 기본(METHOD="GET")으로 지정된다.

GET 방식은 다음과 같이 URL 뒤에 변수이름과 값이 전송되는 형태이다.

http://localhost/board1/board1List?searchType=brdname&searchKeyword=홍

호출되는 URL의 물음표(?)뒤에 변수명과 값이 이퀄(=)로 구분되고, 

다수의 변수는 &로 구분되어 전송된다.

예에서는 searchType와 searchKeyword 두개의 변수가 사용되었다.


POST 방식은 지정된 방식에 의해 인코딩한 다음 서버로 전송되는 것으로

브라우저의 주소 입력란에 내용이 나타나지 않는다. 

일정한 크기 이상의 데이터를 전송할 때, 

GET은 내용이 잘릴 수 있지만 POST 방식은 모두 전송되기 때문에 

사용자가 입력하는 게시물 내용이나 첨부 파일 같이 전송되는 데이터가 많을 경우 POST방식을 사용한다.




'Java > 게시판 2' 카테고리의 다른 글

1. 게시판 확장 - 준비  (0) 2016.03.28
3. 게시판 확장 - 조회수  (5) 2016.03.28
4. 게시판 확장 - 삭제에서 숨기기로  (0) 2016.03.28
5. 게시판 확장 - 페이징  (10) 2016.03.20

+ Recent posts