리스트에서 게시물 들어가서 읽기

링크 작업 다시 확인

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>

댓글남기기