글 읽기는 게시물 번호(brdno)에 해당하는 글을 조회해서 출력하는 기능을 하는데,

그룹번호(bgno)별로 게시물 번호(brdno)를 따로 부여하는 것이 아니라서

파라미터로 받은 게시물만 조회해서 보여주면 된다.

다만, 앞서 언급한 바와 같이 그룹번호(bgno)를 파라미터로 받지 않고

데이터를 조회할 때(selectBoard8One) 그룹번호를 가지고 오도록 처리했다.

<select id="selectBoard8One" parameterType="String" resultType="gu.board8.BoardVO">
        SELECT BGNO, BRDNO, BRDTITLE, BRDWRITER, BRDMEMO, DATE_FORMAT(BRDDATE,'%Y-%m-%d') BRDDATE
          FROM TBL_BOARD
         WHERE BRDDELETEFLAG='N'
           AND BRDNO=#{brdno}
</select>

board8.xml

JSP 파일에서 게시판 기능과 관련된 돌아가기/삭제 링크에

다음과 같이 URL 파라미터로 그룹번호를 추가해 준다.

글 수정에 그룹번호를 지정하지 않는 것은

글 읽기와 마찬가지로 수정 데이터를 조회할 때 그룹번호를 같이 가지고 오기 때문이다.

<a href="board8List?bgno=<c:out value="${boardInfo.bgno}"/>">돌아가기</a>
<a href="board8Delete?bgno=<c:out value="${boardInfo.bgno}"/>&brdno=<c:out value="${boardInfo.brdno}"/>">삭제</a>
<a href="board8Form?brdno=<c:out value="${boardInfo.brdno}"/>">수정</a>

BoardRead.jsp


마지막으로

댓글 관련 기능에도 그룹번호(bgno)를 전달해야 할 것 같지만 필요하지 않다.


첫 번째 이유는 댓글은 게시 글 번호(brdno)을 대상으로 생성하기 때문이다.

해당 글 번호에 대하여 리스트를 조회하고 쓰기/수정/삭제가 이루어 진다.


두 번째 이유는 글 읽기(Board8Read)를 호출할 때

그룹번호가 없어도 되도록 구성했기 때문이다.

댓글 저장 후 다시 게시 글 읽기로 돌아올 때

게시 글 번호만 있어도 되기 때문이다.

더욱이 Ajax를 사용해 서버로 게시 글 번호와 필요 정보만 전송하면 된다.


글 삭제는 게시물 번호(brdno)에 해당하는 글을 지우고,

글 읽기에서 받은(getParameter) 그룹 번호를 가지고 글 리스트로 돌아간다(redirect).

    @RequestMapping(value = "/board8Delete")
    public String boardDelete(HttpServletRequest request) {

        String brdno = request.getParameter("brdno");
        String bgno = request.getParameter("bgno");
       
        boardSvc.deleteBoardOne(brdno);
       
        return "redirect:/board8List?bgno=" + bgno;
    }

Board8Ctr.java


'Java > 게시판 8: 멀티게시판' 카테고리의 다른 글

1. 멀티 게시판 준비  (0) 2016.06.04
2. 글 리스트  (0) 2016.06.04
4. 글 쓰기/수정  (0) 2016.06.04

글 쓰기는 리스트에서 넘겨 받은 그룹 번호(bgno)를 hidden 태그로 가지고 있다가,

서버로 전송 시 게시 글과 같이 전송되어 저장되고,

글 리스트로 돌아갈 때 파라미터로 넘겨준다.

글 수정 일 때는 테이블에서 같이 읽어와서 bgno 변수로 넘겨 준다.

이중 처리 하는 이유는 다음 코드에서 보듯이

글쓰기 일 때는 파라미터로 받아오고(getParameter),

수정 일 때는 테이블에서 읽어오기 때문이다(boardInfo.getBgno()).

    @RequestMapping(value = "/board8Form")
    public String boardForm(HttpServletRequest request, ModelMap modelMap) {
        String bgno = request.getParameter("bgno");
        String brdno = request.getParameter("brdno");
        if (brdno != null) {
            BoardVO boardInfo = boardSvc.selectBoardOne(brdno);
            List<?> listview = boardSvc.selectBoard8FileList(brdno);
       
            modelMap.addAttribute("boardInfo", boardInfo);
            modelMap.addAttribute("listview", listview);
            bgno = boardInfo.getBgno();
        }
        modelMap.addAttribute("bgno", bgno);
       
        return "board8/BoardForm";
    }

Board8Ctr.java

JSP에서는 다음 코드와 같이

컨트롤에서 넘겨 받은 그룹 번호(bgno)를 hidden 태그로 가지고 있도록 하면 된다.

<input type="hidden" name="bgno" value="<c:out value="${bgno}"/>">
<input type="hidden" name="brdno" value="<c:out value="${boardInfo.brdno}"/>">
<a href="#" onclick="fn_formSubmit()">저장</a>

Board8Ctr.jsp

글을 저장하는 컨트롤(board8Save)이나 서비스에서 특별히 처리할 것은 없다.

그룹 번호(bgno)는 다른 게시물 정보(BoardVO boardInfo)와 같이 컨트롤로 전송되기 때문에

저장 SQL문만 다음과 같이 수정하면 된다.

<insert id="insertBoard8" parameterType="gu.board8.BoardVO" >
        <selectKey resultType="String" keyProperty="brdno" order="BEFORE">
            SELECT IFNULL(MAX(BRDNO),0)+1 FROM TBL_BOARD
        </selectKey>
   
        INSERT INTO TBL_BOARD(BGNO, BRDNO, BRDTITLE, BRDWRITER, BRDMEMO, BRDDATE, BRDHIT, BRDDELETEFLAG)
        VALUES (#{bgno}, #{brdno}, #{brdtitle}, #{brdwriter}, #{brdmemo}, NOW(), 0, 'N' )
</insert>

Board8Ctr.xml

글이 저장되고 나면 다음과 같이

글 리스트로 돌아갈 때(redirect) 파라메터로 그룹 번호(bgno)를 넘겨준다.

그렇지 않으면 오류가 발생하거나 등록한 글을 찾을 수 없다.

    @RequestMapping(value = "/board8Save")
    public String boardSave(HttpServletRequest request, BoardVO boardInfo) {
        String[] fileno = request.getParameterValues("fileno");
       
        FileUtil fs = new FileUtil();
        List<FileVO> filelist = fs.saveAllFiles(boardInfo.getUploadfile());

        boardSvc.insertBoard(boardInfo, filelist, fileno);

        return "redirect:/board8List?bgno=" + boardInfo.getBgno();
    }

Board8Ctr.java


'Java > 게시판 8: 멀티게시판' 카테고리의 다른 글

1. 멀티 게시판 준비  (0) 2016.06.04
2. 글 리스트  (0) 2016.06.04
3. 글 읽기 / 삭제  (0) 2016.06.04
JQuery는 자바스크립트(JavaScript - JS)를 브라우저 호환성 등을

신경 쓰지 않고 쉽게 짧은 코드로 사용할 수 있게 만든 라이브러리(위키-https://ko.wikipedia.org/wiki/JQuery)로,

가장 폭 넓게 사용되는 라이브러리라고 생각한다. 

사용법에 대한 자료가 많으니 인터넷 검색을 통해 익혀 두길 바라고

여기서는 게시판(글읽기-댓글)에 사용된 자바 스크립트를 JQuery로 변환하면서 필요한 내용만 언급하고자 한다.

https://opentutorials.org/course/53 생활코딩

http://jquery.com/

여기서 JQuery를 이용하는 이유는 코드가 간단해지는 것도 있고

동적인 웹 사이트를 만들 때 필요한 라이브러리(Tree, Grid 등)들이 JQuery를 기반으로 제공되기 때문이다.

개인적으로 JS = JQuery 라고 생각한다.


먼저, 컨트롤(Board6Ctr.java), JSP(board6)만 board7으로 복사해서 만들고

서비스(Board6Svcjava)와 sql문이 있는 board6.xml는 새로 작성하지 않는다.

JS를 JQuery로 바꾸는 것은 JSP 파일만 수정하면 된다.

Board7Ctr 컨트롤이 필요한 이유는

별도로 예제를 구성하기 위해서 이기도 하고

다음 예제가 JQuery Ajax를 사용하는 것으로

Ajax는 서버(컨트롤)와 통신하는 것이기 때문에 통신을 위한 수정이 필요하기 때문이다.

따라서, 새로운 컨트롤(Board7Ctr.java), JSP(board7)을 생성한다.

다음으로 JQuery 공식 사이트에서 적절한 버전을 다운로드 받는다.

http://jquery.com/download/

1.x와 2.x 중에 적절한 버전을 선택하여 다운 받는다.

여기서는 Internet Explorer 6, 7, or 8를 지원하지 않는 2.2.3를 다운 받았다.

https://code.jquery.com/jquery-2.2.3.min.js

다운 받은 jquery-2.2.3.min.js 파일을 webapp 폴더에 js 폴더를 만들어 보관하였다.

폴더의 위치는 원하는 위치로 하면 되는데

개인적으로 webapp/js 폴더에 모아서 사용한다.

그런 후 Spring 환경파일(webapp/WEB-INF/dispatcher-servlet.xml)에

<mvc:resources mapping="/js/**" location="/js/" />

를 추가해 주어야 한다.

그렇지 않으면 파일을 찾을 수 없다는 메시지를 받게 된다.

대부분 CSS와 이미지도 이런 식으로 모아서 사용하니 다른 자료들을 더 확인해 두길 바란다.

http://www.mkyong.com/spring-mvc/spring-mvc-how-to-include-js-or-css-files-in-a-jsp-page/

http://fromleaf.tistory.com/180


마지막으로 JQuery를 사용할 jsp파일 (BoardRead.jsp)의 head 테그에

JQuery 스크립트를 가져오는 다음 코드를 추가해 준다.

<script src="js/jquery-2.2.3.min.js"></script>



'Java > 게시판 7: JQuery' 카테고리의 다른 글

2. 변환: Javascript -> JQuery  (1) 2016.06.04
3. Ajax - 댓글 삭제  (2) 2016.06.04
4.Ajax – 댓글 작성  (0) 2016.06.04

+ Recent posts