Spring 게시판 만들기(12)
리스트에서 게시물 들어가서 읽기
링크 작업 다시 확인
list.jsp 파일에서 제목에 링크를 넣는다
링크의 주소는 게시물을 읽을 /get 파일에 bno 값을 연결해서 사용한다
<!-- var에 넣은 변수가 BoardVO의 필드가 된다 -->
<%-- html 주석태그에 서버관련을 삽입하면 그대로 실행된다 되도록 jsp 주석 이용 --%>
<%-- ${} 안에 넣는 입력은 model.addAttribute의 앞쪽 ""내용 --%>
<c:forEach items="${list }" var="board">
<tr>
<!-- BoardVO의 get메서드를 호출한다 -->
<th scope="row"><c:out value="${board.bno }" /></th>
<td><a href="/board/get?bno=${board.bno }"><c:out value="${board.title }" /> </a> </td>
<td><c:out value="${board.writer }" /></td>
<td><fmt:formatDate value="${board.regdate }" pattern="yyyy-MM-dd hh:mm" /></td>
</tr>
</c:forEach>
${list}의 값은 컨트롤러 /list에서 model.addAttribute의 값을 받아온거고 뒤에 var의 변수는 임의로 지정해서
아래에 변수.내용을 넣어서 사용한다
링크에 /board/get?bno=${board.bno}를 넣어 list.jsp에서 값을 누르면
컨트롤러에서 bno에 맞는 글을 불러온다
// 게시물 읽기
// @RequestParam에 들어가는 bno가 list.jsp 파일의 /board/get?에 bno 값을 링크로 넣어 표기
// Model model이 들어가서 데이터를 전달해서 출력
// bno값을 받아와서 파라미터에 입력해주고 그 해당하는 파라미터를 출력한다
// 고로, 바로 get주소로 넘어가면 bno값이 없기 때문에 오류로 나옴
@GetMapping("/get")
public void get(@RequestParam("bno") Long bno, Model model) {
log.info("글번호 : " + bno);
BoardVO board = service.get(bno);
model.addAttribute("board", board);
// 첫번째 "board"는 jsp 파일 내에서 서버를 불러올때 사용하는 변수
}
위에서 처럼 @RequestParam(“bno”)를 변수로 넣어줘야 한다
그리고 bno를 service.get에서 불러와서 board 변수에 넣고
“board”는 별개로 jsp에서 사용할 값이고 뒤에는 앞에 설정한 변수 board를 넣는다
service와 serviceImpl 먼저 작업한다
List<BoardVO> getList();
BoardVO get(Long bno);
@Override
public List<BoardVO> getList(){
return mapper.getList();
}
@Override
public BoardVO get(Long bno) {
return mapper.get(bno);
}
SQL SELECT 작성과 xml 연결
List<BoardVO> getList();
BoardVO get(Long bno);
<!-- 파라타입에 xml.에 있는 id에 들어가는 변수 타입을 적어준다 -->
<!-- #{}안에 들어가는 내용은 BoardMapper의 타입 Long 다음에 오는 변수를 말한다 -->
<select id="get" parameterType="Long" resultType="com.demo.domain.BoardVO">
select bno, title, content, writer, regdate from tbl_board where bno = #{bno}
</select>
위에서 주의할 점은 id는 위의 메서드이고,
#{}안에 들어가는 내용은 BoardMapper의 타입 Long 다음에 오는 변수를 말한다를 기억하자
get.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 uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="description" content="">
<meta name="author" content="Mark Otto, Jacob Thornton, and Bootstrap contributors">
<meta name="generator" content="Hugo 0.88.1">
<title>Pricing example · Bootstrap v4.6</title>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<link rel="canonical" href="https://getbootstrap.com/docs/4.6/examples/pricing/">
<!-- Bootstrap core CSS -->
<link href="/resources/css/bootstrap.min.css" rel="stylesheet">
<style>
.bd-placeholder-img {
font-size: 1.125rem;
text-anchor: middle;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
@media (min-width: 768px) {
.bd-placeholder-img-lg {
font-size: 3.5rem;
}
}
</style>
<!-- Custom styles for this template -->
<link href="/resources/css/pricing.css" rel="stylesheet">
</head>
<body>
<!-- header -->
<%@ include file="/WEB-INF/views/include/header.jsp" %>
<%@ include file="/WEB-INF/views/include/carousel.jsp" %>
<div class="container">
<h3>게시판 글읽기</h3>
<div class="form-group">
<label for="bno">번호</label>
<input type="text" class="form-control" id="bno" name="bno" readonly value="${board.bno }">
</div>
<div class="form-group">
<label for="title">제목</label>
<input type="text" class="form-control" id="title" name="title" readonly value="${board.title }">
</div>
<div class="form-group">
<label for="content">내용</label>
<textarea class="form-control" id="exampleFormControlTextarea1" rows="3" name="content" readonly>${board.content }</textarea>
</div>
<div class="form-group">
<label for="writer">작성자</label>
<input type="text" class="form-control" id="writer" name="writer" readonly value="${board.writer }">
</div>
<div class="form-group">
<label for="regdate">등록일</label>
<input type="text" class="form-control" id="regdate" name="regdate" readonly value="<fmt:formatDate value="${board.regdate }" pattern="yyyy-MM-dd hh:mm" />">
</div>
<button type="button" id="btn_modify" class="btn btn-primary">Modify</button>
<button type="button" id="btn-remove" class="btn btn-danger">Remove</button>
<button type="button" id="btn-list" class="btn btn-primary">List</button>
<!-- footer -->
<%@ include file="/WEB-INF/views/include/footer.jsp" %>
</div>
</body>
</html>
댓글남기기