[Spring Boot 게시판] 15일차

김정현·2022년 10월 17일
0

SPRINGBOOT게시판

목록 보기
14/36

1. UsrArticleController 에서 list 선택시 board 에 대한 정보를 불러와 게시판의 이름을 title로 적용

1) head.jspf

		<li class="hover:underline">
       		 <a class="flex h-full items-center px-3" href="../article/list?boardId=1" >
            	<span>NOTICE</span>
             </a>
		</li>
		<li class="hover:underline">
             <a class="flex h-full items-center px-3" href="../article/list?boardId=2" >
                <span>FREE</span>
             </a>
	    </li>
  • boardId로 게시판을 분리( 게시글에 boardId가 저장되있음 )

2) board 객체

	@RequestMapping("/usr/article/list")
	public String showList(HttpServletRequest req, Model model, int boardId) {
		Rq rq = (Rq) req.getAttribute("rq");
		Board board = boardService.getBoardById(boardId);
		List<Article> articles = articleService.getForPrintArticles(rq.getLoginedMemberId());
		model.addAttribute("articles", articles);
		model.addAttribute("board", board);
	return "usr/article/list";
}
  • DB의 board 테이블의 데이터를 board객체로 받음
  • board객체를 model.addAttribute("board", board)하여 jsp파일에서 board객체 데이터를 사용

3) list.jsp

	~~ 생략 ~~	
	<c:set var="pageTitle" value="${board.name}" />
  • 전달받은 board데이터를 jsp에서 사용

2. 존재하지 않는 게시판 처리, 선택된 게시판에 관련된 게시물만 노출

1) 존재하지 않는 게시판 처리

	@RequestMapping("/usr/article/list")
	public String showList(HttpServletRequest req, Model model, int boardId) {
		Rq rq = (Rq) req.getAttribute("rq");
		Board board = boardService.getBoardById(boardId);
		
		if(board==null) {
			return rq.jsHistoryBackOnView("존재하지 않는 게시판 입니다.");
		}
		
		List<Article> articles = articleService.getForPrintArticles(rq.getLoginedMemberId(),board.getId());
  • DB에서 boardId로 board객체를 가져올수 없다면 게시판이 존재하지 않으므로 뒤로가기

2) boardId를 토대로 DB로부터 게시물 불러오기

	<select id="getForPrintArticles" resultType="Article">
		SELECT A.* , M.nickname AS extra__writer 
		FROM article AS A
		INNER JOIN `member` AS M
		ON A.memberId = M.id
		WHERE 1
		<if test="boardId != 0">
		AND boardId = #{boardId}
		</if>
		ORDER BY A.id DESC
	</select>
  • 게시글들에는 어떤 게시판의 게시글인지 판별 하기위해 boardId가 저장되있다

  • 게시판 마다 해당하는 글들만 불러오기 위한 쿼리문

  • boardId가 0이라면 전체글을 불러온다

0개의 댓글