09009

[Spring] 예제 1 연습 - 게시글 상세보기 본문

Back-End/Spring
[Spring] 예제 1 연습 - 게시글 상세보기
09009

mainPage.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>커뮤니티</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-KK94CHFLLe+nY2dmCWGMq91rCGa5gtU4mk92HdvYe+M/SXH301p5ILy+dN9+nJOZ" crossorigin="anonymous">
</head>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ENjdO4Dr2bkBIFxQpeoTz1HIcje39Wm4jDKdf19U8gI4ddQ3GYNS7NTKfAdVQSZe" crossorigin="anonymous"></script>
<body>

<div class="container">

	<%-- 내비게이션 바 --%>
	<div class="row">
		<div class="col">
			<jsp:include page="../common/topNavi.jsp"></jsp:include>
		</div>
	</div>
	<%-- 내비게이션 바 --%>	
	
	<div class="row mt-5">
		<div class="col"></div>
		<div class="col-8">
		
			<div class="row">
				<div class="col fw-bold fs-3 text-center">자유게시판</div>
			</div>
			
			<div class="row mt-2">
				<div class="col text-center">리그오브레전드 게시판입니다.</div>
			</div>
			
			<div class="row mt-4">
				
				<table class="table">
				  <thead>
				    <tr>
				      <th scope="col">글번호</th>
				      <th scope="col">제목</th>
				      <th scope="col">글쓴이</th>
				      <th scope="col">날짜</th>
				      <th scope="col">조회</th>
				      <th scope="col">추천</th>
				    </tr>
				  </thead>
				  
				  <tbody class="table-group-divider">
				  	<c:forEach items="${list}" var="map">
				    <tr>
				      <th scope="row">${map.boardDto.boardid}</th>
				      <td><a href="./readContentPage?id=${map.boardDto.boardid}">${map.boardDto.title}</a></td>
				      <td>${map.userDto.nickname}</td>
				      <td><fmt:formatDate value="${map.boardDto.reg_date}" pattern="yy.MM.dd" /></td>
				      <td>${map.boardDto.readcount}</td>
				      <td>${map.boardDto.likecount}</td>
				    </tr>
				    </c:forEach>  
				  </tbody>
				</table>
			
			</div>
			
			<div class="row">
				<div class="col d-flex justify-content-end">
					<c:if test="${!empty sessionUser}">
						<button onclick="location.href='./writeContentPage'" class="btn btn-primary">글쓰기</button>
					</c:if>
				</div>
			</div>
			
		</div>
		<div class="col"></div>
	
	</div>
	<div class="row"></div>

</div>

</body>
</html>

BoardSqlMapper

	// 게시글 상세보기
	public BoardDto selectBoardById(int boardid);

BoardSqlMapper.xml

	<select id="selectBoardById" resultType="com.yyi.problem1.dto.BoardDto">
		SELECT *
		FROM pr_board
		WHERE boardid = #{boardid}
	</select>

BoardServiceImpl

 

	// 게시글 상세보기
	public Map<String, Object>  getBoard(int boardid) {
		
		Map<String, Object> map = new HashMap<>();
		
		BoardDto boardDto = boardSqlMapper.selectBoardById(boardid);
		UserDto userDto = userSqlMapper.selectUserById(boardDto.getUserid());
		
		map.put("boardDto", boardDto);
		map.put("userDto", userDto);
		
		return map;
	}

 

BoardController

	@RequestMapping("readContentPage")
	public String readContentPage(Model model, int id) {
		
		Map<String, Object> map = boardService.getBoard(id);
		
		model.addAttribute("data", map);
		
		return "board/readContentPage";
		
	}

readContentPage.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix="c" %>    
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>커뮤니티</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-KK94CHFLLe+nY2dmCWGMq91rCGa5gtU4mk92HdvYe+M/SXH301p5ILy+dN9+nJOZ" crossorigin="anonymous">
</head>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ENjdO4Dr2bkBIFxQpeoTz1HIcje39Wm4jDKdf19U8gI4ddQ3GYNS7NTKfAdVQSZe" crossorigin="anonymous"></script>
<body>

<div class="container">
	<%-- 내비게이션 바 --%>
	<div class="row">
		<div class="col">
			<jsp:include page="../common/topNavi.jsp"></jsp:include>
		</div>
	</div>
	<%-- 내비게이션 바 --%>
	
	
	<div class="row mt-5">
		<div class="col"> </div>
		
		<div class="col-10">
		
			<div class="row">
				<div class="col fw-bold fs-4 text-center">
					게시글 상세보기
				</div>
			</div>
		 
		 	<hr>

			<div class="d-flex bd-highlight mb-3">
			  <div class="me-auto bd-highlight fw-bold">${data.boardDto.title}	</div>
			  <div class="bd-highlight"><fmt:formatDate value="${data.boardDto.reg_date}" pattern="yy.MM.dd" />	</div>
			</div>
						
			<hr>

            <div class="d-flex bd-highlight mb-3">
                <div class="me-auto bd-highlight">작성자 : ${data.userDto.nickname}</div>
                <div class="bd-highlight me-2">조회수 ${data.boardDto.readcount}</div>
                <div class="bd-highlight me-2">추천 ${data.boardDto.likecount}</div>
                <div class="bd-highlight">댓글 </div> <%-- 수정할 것 --%>
            </div>

			<hr>

			<div class="row-8 mt-2">
				<div class="row">
					<div class="col"> ${data.boardDto.content}</div>
				</div>
			</div>
			
			<hr>
			
			<div class="row mt-2">
				<div class="col d-flex justify-content-center"> 
					<button class="btn btn-primary me-3" onclick="location.href='./mainPage'">목록</button>
					<c:if test="${!empty sessionUser && sessionUser.userid == data.userDto.userid}">
					
						<button class="btn btn-primary me-3" onclick="location.href='./updateContentPage?id=${data.boardDto.boardid}'">수정</button>
						<button class="btn btn-primary" onclick="location.href='./deleteContentProcess?id=${data.boardDto.boardid}'">삭제</button>
					</c:if> 
				</div>
			</div>
	
		</div>
		<div class="col"> </div>

	</div>
	
	<div class="row">
	</div>

</div>

</body>
</html>