728x90

 

게시글 삭제

BoardMapper

@Delete("DELETE FROM content_table WHERE content_board_idx = #{content_board_idx}")
int getCnt(int content_board_idx);
  •   게시글을 삭제하는 쿼리문을 실행하는 메소드로 매개변수로 가져오는 게시글 번호를 기준으로 하여 삭제한다.

BoardDao

public void deleteInfo(int content_idx) {
    boardMapper.deleteInfo(content_idx);
}

BoardService

public void deleteInfo(int content_idx) {
    boardDao.deleteInfo(content_idx);
}

BoardController

    @GetMapping("/delete")
    public String delete(@RequestParam("board_info_idx") int board_Info_Idx,
                        @RequestParam("content_idx") int content_idx,
                                Model model) {

        boardService.deleteInfo(content_idx);

        model.addAttribute("board_info_idx",board_Info_Idx); // n팀 게시글 삭제 후 n팀으로 돌아오기 위해

        return "board/delete";
    }

Board.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<c:set var="root" value="${pageContext.request.contextPath }/" />
<script>
    alert("Deleted successfully.")
    location.href='${root}board/main?board_info_idx=${board_info_idx}'
</script>

 

 

 


페이지작업

 

Page

package kr.bit.beans;

import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class Page {
    private int min;
    private int max;
    private int prePage;
    private int nextPage;
    private int pageCnt;
    private int currentPage;

    public Page(int contentCnt, int currentPage, int contentPageCnt, int pa) {

        this.currentPage = currentPage;
        pageCnt = contentCnt / contentPageCnt;
        //533/10=53 €
        if (contentCnt % contentPageCnt > 0) {
            pageCnt++;
        }
        min = ((currentPage - 1) / contentPageCnt) * contentPageCnt + 1;
        max = min + pa - 1;

        if (max > pageCnt) {
            max = pageCnt;
        }

        prePage = min - 1;
        nextPage = max + 1;

        if (nextPage > pageCnt) {
            nextPage = pageCnt;
        }
    }
}

 

 

코드 추가

BoardMapper

@Select("select count(*) from content_table where content_board_idx = #{content_board_idx}")
int getCnt(int content_board_idx);

 

BoardDao

public int getCnt(int content_board_idx) {
    return boardMapper.getCnt(content_board_idx);
}

 

BoardService

public Page getCnt(int content_board_idx, int currentPage) {
    
    int content_cnt = boardDao.getCnt(content_board_idx);
    //                전체글 갯수
    Page p = new Page(content_cnt, currentPage, page_listcount, page_pa);
    
    return p;
    
}

 

BoardController

주석 되어있던것 주석 해

@GetMapping("/main")
public String main(@RequestParam("board_info_idx") int board_info_idx,
                   @RequestParam(value = "page", defaultValue = "1") int page,
                   Model model) {
    model.addAttribute("board_info_idx", board_info_idx);

    String boardName = boardService.getBoardName(board_info_idx); // 팀명 추출 메소드
    model.addAttribute("boardName", boardName);

    List<Content> contentLi = boardService.getContent(board_info_idx, page);
    model.addAttribute("contentLi", contentLi); // 게시글 목록

    Page pbean=boardService.getCnt(board_info_idx, page);
    model.addAttribute("pbean", pbean); //
    model.addAttribute("page", page); //

    return "board/main";
}

 

Board/main.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:set var="root" value="${pageContext.request.contextPath }/"/>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Fighting, Our Class</title>
    <!-- Bootstrap CDN -->
    <link rel="stylesheet"
          href="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css">
    <script
            src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script
            src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.0/umd/popper.min.js"></script>
    <script
            src="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js"></script>
</head>
<body>

<c:import url="/WEB-INF/views/include/top_menu.jsp"/>

<div class="container" style="margin-top: 100px">
    <div class="card shadow">
        <div class="card-body">
            <h3 class="card-title">${boardName }</h3>
            <table class="table table-hover" id="board_list">
                <thead>
                <tr>
                    <th class="text-center d-none d-md-table-cell">Post Number</th>
                    <th class="w-50">Title</th>
                    <th class="text-center d-none d-md-table-cell">Writer</th>
                    <th class="text-center d-none d-md-table-cell">Date</th>
                </tr>
                </thead>

                <tbody>
                <c:forEach var='obj' items="${contentLi }">
                    <tr>
                        <td class="text-center d-none d-md-table-cell">${obj.content_idx }</td>
                        <td><a href='${root }board/read?board_info_idx=${board_info_idx}&content_idx=${obj.content_idx}&page=${page}'>${obj.content_subject }</a></td>
                        <td class="text-center d-none d-md-table-cell">${obj.content_writer_name }</td>
                        <td class="text-center d-none d-md-table-cell">${obj.content_date }</td>

                    </tr>
                </c:forEach>
                </tbody>
            </table>

            <div class="d-none d-md-block">
                <ul class="pagination justify-content-center">
                    <c:choose>
                        <c:when test="${pBean.prePage <= 0 }">
                            <li class="page-item disabled">
                                <a href="#" class="page-link">Previous</a>
                            </li>
                        </c:when>
                        <c:otherwise>
                            <li class="page-item">
                                <a href="${root }board/main?board_info_idx=${board_info_idx}&page=${pBean.prePage}" class="page-link">Previous</a>
                            </li>
                        </c:otherwise>
                    </c:choose>


                    <c:forEach var='idx' begin="${pBean.min }" end='${pBean.max }'>
                        <c:choose>
                            <c:when test="${idx == pBean.currentPage }">
                                <li class="page-item active">
                                    <a href="${root }board/main?board_info_idx=${board_info_idx}&page=${idx}" class="page-link">${idx }</a>
                                </li>
                            </c:when>
                            <c:otherwise>
                                <li class="page-item">
                                    <a href="${root }board/main?board_info_idx=${board_info_idx}&page=${idx}" class="page-link">${idx }</a>
                                </li>
                            </c:otherwise>
                        </c:choose>
                        //첫번째 페이지에서 이전으로 못가게 막음

                    </c:forEach>

                    <c:choose>
                        <c:when test="${pBean.max >= pBean.pageCnt }">
                            <li class="page-item disabled">
                                <a href="#" class="page-link">Next</a>
                            </li>
                        </c:when>
                        <c:otherwise>
                            <li class="page-item">
                                <a href="${root }board/main?board_info_idx=${board_info_idx}&page=${pBean.nextPage}" class="page-link">Next</a>
                            </li>
                        </c:otherwise>
                    </c:choose>
                    // 마지막 페이지에 도달하면 멈춤

                </ul>
            </div>

            <div class="text-right">
                <a href="${root }board/write?board_info_idx=${board_info_idx}" class="btn btn-primary">Write</a>
            </div>

        </div>
    </div>
</div>

<c:import url="/WEB-INF/views/include/bottom_menu.jsp"/>

</body>
</html>

 

728x90

+ Recent posts