글 읽기는 리스트에서 사용자가 선택한 글에 대한 내용을 보여주는 페이지로

다음과 같은 코드를 가진다.

먼저, 사용자가 선택한 글의 번호(brdno)을 파라메터로 받아온다.

앞서 글쓰기에서는 @ModelAttribute를 이용하여 boardVO 클래스로 받아왔지만,

여기에서는 파라메터가 한개라서 request로 받아온다.

이 파라메터는 글읽기로 넘어 올 때는 리스트에서 글 제목에 board1Read?brdno=1와 같은 url이 링크로 생성되었고

물음표(?) 뒤의 값이 파라메터로 넘어오게 되는 것이다.

데이터 베이스에서 글번호에 해당하는 내용을 가져오기 위해 서비스로 넘겨준다.

SQL이 실행되어 하나의 글(행)이 반환되면 ModelMap을 이용하여

JSP에 값을 넘겨서 적절한 모습으로 사용자에게 보여 주게 된다.

@RequestMapping(value = "/board1Read")
public String boardRead(HttpServletRequest request, ModelMap modelMap) throws Exception {
       
        String brdno = request.getParameter("brdno");
       
        boardVO boardInfo = boardSvc.selectBoardOne(brdno);
       
        modelMap.addAttribute("boardInfo", boardInfo);
       
        return "board1/boardRead";
}

board1Ctr.java

글읽기 페이지(HTML)는 다음 코드로,

글 쓰기 폼(HTML)에서 텍스트 입력 박스 위치에 c:out테그로 각각의 값을 출력해서 작성했다.

컨트롤에서 boardInfo로 넘겨줬기 때문에 JSP 파일에서도

boardInfo.brdwriter, boardInfo.brdtitle 등으로 값을 가져와 사용한다.

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%>
<%@ taglib prefix="c"  uri="http://java.sun.com/JSP/jstl/core"%>

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>board1</title>
</head>
<body>
        <table border="1" style="width:600px">
            <caption>게시판</caption>
            <colgroup>
                <col width='15%' />
                <col width='*%' />
            </colgroup>
            <tbody>
                <tr>
                    <td>작성자</td>
                    <td><c:out value="${boardInfo.brdwriter}"/></td>
                </tr>
                <tr>
                    <td>제목</td>
                    <td><c:out value="${boardInfo.brdtitle}"/></td>
                </tr>
                <tr>
                    <td>내용</td>
                    <td><c:out value="${boardInfo.brdmemo}"/></td>
                </tr>
            </tbody>
        </table>   
        <a href="#" onclick="history.back(-1)">돌아가기</a>
        <a href="board1Delete?brdno=<c:out value="${boardInfo.brdno}"/>">삭제</a>
        <a href="board1Update?brdno=<c:out value="${boardInfo.brdno}"/>">수정</a>
</body>
</html>

다시 리스트로 돌아가기 위한 링크,

글 삭제와 글 수정을 할 수 있는 링크가 추가 되어 있다.

글 읽기, 수정, 삭제는 모두 대상 글에 대한 고유 값인 글 번호 (brdno)가 필요하기 때문에

항상파라메터로 넘어가는 것을 볼 수 있다. 

리스트에서 

글읽기로 넘어 갈 때는 board1Read?brdno=1
글삭제로 넘어 갈 때는 board1Delete?brdno=1
글수정으로 넘어 갈 때는 board1Update?brdno=1




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

2. 기본게시판 - 리스트  (0) 2016.03.28
3. 기본게시판 - 글 쓰기  (4) 2016.03.28
5. 기본게시판 - 글 수정  (2) 2016.03.28
6. 기본게시판 - 글 삭제  (0) 2016.03.28
7. 기본게시판 - 예전의 개발 코드  (1) 2016.03.19

글 수정도 글쓰기와 같이 두 개의 컨트롤로 구성 되어 있다.

사용자의 입력을 받는 폼과 입력한 내용을 저장하는 컨트롤로 구성된다.

사용자의 입력을 받는 폼의 컨트롤은 글읽기와 유사한 구조로 되어 있다.

글번호를 파라메터로 받은 뒤 데이터 베이스에서 해당 글을 조회하여

사용자가 수정할 수 있도록 입력상자(텍스트 박스)에 넣어준다.

글 읽기와 다른 점은 글 쓰기처럼 텍스트 박스를 사용한다는 것이다.

@RequestMapping(value = "/board1Update")
public String boardUpdate(HttpServletRequest request, ModelMap modelMap) throws Exception {
       
        String brdno = request.getParameter("brdno");
       
        boardVO boardInfo = boardSvc.selectBoardOne(brdno);
       
        modelMap.addAttribute("boardInfo", boardInfo);
       
        return "board1/boardUpdate";
}

board1Ctr.java

수정의 입력 폼은 글쓰기와 동일한데

hidden 테그로 글번호(brdno)를 가지고 있다는 것이다.

글쓰기는 글번호가 없는 상태이지만 수정은 글번호가 있어야 수정할 수 있기 때문에

사용자에게 보이지 않는 hidden 테그로 가지고 있게 된다.

Form 테그의 action 명이 board1UpdateSave로 되어

입력한 내용이 저장(Update) 컨트롤로 가도록 되어 있다.

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%>
<%@ taglib prefix="c"  uri="http://java.sun.com/jsp/jstl/core"%>

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>board1</title>
</head>
<body>
    <form name="form1" action="board1UpdateSave">
        <table border="1" style="width:600px">
            <caption>게시판</caption>
            <colgroup>
                <col width='15%' />
                <col width='*%' />
            </colgroup>
            <tbody>
                <tr>
                    <td>작성자</td>
                    <td><input type="text" name="brdwriter" size="20" maxlength="20" value="<c:out value="${boardInfo.brdwriter}"/>"></td>
                </tr>
                <tr>
                    <td>제목</td>
                    <td><input type="text" name="brdtitle" size="70" maxlength="250" value="<c:out value="${boardInfo.brdtitle}"/>"></td>
                </tr>
                <tr>
                    <td>내용</td>
                    <td><textarea name="brdmemo" rows="5" cols="60"><c:out value="${boardInfo.brdmemo}"/></textarea></td>
                </tr>
            </tbody>
        </table>   
        <input type="hidden" name="brdno" value="<c:out value="${boardInfo.brdno}"/>">
        <a href="#" onclick="form1.submit()">저장</a>
    </form>   
</body>
</html>

boardUpdate.jsp

수정 컨트롤에서는 글쓰기의 저장 컨트롤과 같이 boardVO로 사용자의 입력값을 받아와서

서비스의 updateBoard을 호출하여 UPDATE 문을 실행하여 테이블에 저장한다.

글쓰기와 차이점은 Insert문이냐 Update 문이냐 하는 차이뿐이다.

@RequestMapping(value = “/board1UpdateSave”)
public String board1UpdateSave(@ModelAttribute("boardInfo") boardVO boardInfo) throws Exception {
       
        boardSvc.updateBoard(boardInfo);
       
        return "redirect:/board1List";
}

board1Ctr.java



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

2. 기본게시판 - 리스트  (0) 2016.03.28
3. 기본게시판 - 글 쓰기  (4) 2016.03.28
4. 기본게시판 - 글 읽기  (0) 2016.03.28
6. 기본게시판 - 글 삭제  (0) 2016.03.28
7. 기본게시판 - 예전의 개발 코드  (1) 2016.03.19

글삭제는 시각적인 페이지(html)이 없이 넘겨받은 글번호(brdno)를 Delete 문을 이용하여 삭제하고 리스트로 가서 확인할 수 있게 하면 된다.

@RequestMapping(value = "/board1Delete")
       public String boardDelete(HttpServletRequest request) throws Exception {
       
        String brdno = request.getParameter("brdno");
       
        boardSvc.deleteBoardOne(brdno);
       
        return "redirect:/board1List";
}

board1Ctr.java

    <delete id="deleteBoard1One" parameterType="String">
        DELETE
          FROM TBL_BOARD
         WHERE BRDNO=#{brdno}
    </delete>

board1.xml

컨트롤, 서비스, SQL문과 반환(ResultSet) 그리고 시각적인 JSP(HTML)를 오가는 구조와 게시판의 흐름만 알면 이상의 내용은 문제없이 작성하고 실행할 수 있다.

실제 개발도 이 구조와 개념 내에서 이루어지기 때문에 잘 이해하길 바란다.

이 이상의 것들은 필요에 따른 부가적인 것으로 앞서 언급한 기본을 충실하게 이해하고 단독으로 개발할 수 있다면, 이후의 것들은 쉽게 개발 할 수 있을 것이다.

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

2. 기본게시판 - 리스트  (0) 2016.03.28
3. 기본게시판 - 글 쓰기  (4) 2016.03.28
4. 기본게시판 - 글 읽기  (0) 2016.03.28
5. 기본게시판 - 글 수정  (2) 2016.03.28
7. 기본게시판 - 예전의 개발 코드  (1) 2016.03.19

+ Recent posts