- [셸위:게임 친구 매칭 사이트] 게시판 구현2024년 09월 25일
- Song hyun
- 작성자
- 2024.09.25.:20
728x90반응형[셸위:게임 친구 매칭 사이트] 게시판 구현
-결제, 결제 취소, 서브몰 생성 등의 여러 API들을 접한 뒤라 그런지 게시판 구현이 무척 간편하게 느껴졌다. (페이징이 들어가면 그렇게 간편하지도 않지만...)
-이번에는 페이징을 제외하고, 간단한 게시판 목록-디테일을 만드는 기능에 대해 이야기해보고자 한다. 구현한 화면은 위와 같다. 게임 친구 매칭 사이트라는 취지에 맞게, 그 때 그 때의 게임 시사 뉴스를 알려주는 게임 뉴스 게시판이다.
1. newsPage.jsp - 게시글 목록
-jsp 측에서는 controller 측에서부터 model.addAttribute()를 통해 전달받은 값으로 목록을 생성한다.
-<c:forEach>를 통해 리스트 내의 요소 수만큼 목록을 만들게 된다.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ include file="/WEB-INF/view/layout/header.jsp" %> <link rel="stylesheet" href="/static/css/news.css"> <div class="news-container"> <h1>뉴스 (${totalNewsNum})</h1> <c:forEach var="news" items="${newsList}"> <div class="news-box" OnClick="location.href ='news-detail/${news.id}'" style="cursor:pointer;"> <img src="../static/images/news/${news.url}" class="image-container"> <div class="column-box"> <h3>${news.title}</h3> <h5 class="text-box date" >${news.subTitle}</h5> <p>${news.createdAt}</p> </div> </div> </c:forEach> <div class = "pagination"> <c:forEach var="number" begin="1" end="${pageSize}" > <button class="pagination-btn">${number}</button> </c:forEach> </div> </div> <%@ include file="/WEB-INF/view/layout/footer.jsp" %>
2. NewsController
-컨트롤러 딴에서는 DB에 쿼리문을 보내 news 객체들을 모두 받아오게끔 한다. 전달받은 정보들은 List에 담겨, jsp로 model.addAttribute를 통해 전달하게 된다. 상세보기도 동일한다.
/** * 뉴스 목록 * @param model * @return */ // http://localhost:8080/notice/news-list @GetMapping("/news-list") public String newsPage(Model model) { List<News> newsList = noticeService.getAllnews(); int totalNewsNum = newsList.size(); Integer pageSize = totalNewsNum/4; model.addAttribute("newsList", newsList); model.addAttribute("totalNewsNum", totalNewsNum); model.addAttribute("pageSize", pageSize); return "news/newsPage"; } /** * 뉴스 디테일 페이지 * @param id * @param model * @return */ @GetMapping("/news-detail/{id}") public String newsdetail(@PathVariable("id") int id, Model model) { News selectedNews = noticeService.getNewsById(id); model.addAttribute("news", selectedNews); return "news/newsDetail"; }
3. newsDetail.jsp - 게시글 상세보기
-newsDetail.jsp 측에서는 게시글 상세보기를 지원한다.
-controller에서 전송한 게시글의 정보에 따라, 해당 게시글의 제목, 부제목, 사진, 글의 내용을 보여주게 된다.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ include file="/WEB-INF/view/layout/header.jsp" %> <link rel="stylesheet" href="/static/css/news.css"> <div class="news-detail-container"> <div class="detail-container"> <h2 class="title">${news.title}</h2> <p class="date">${news.createdAt}</p> <hr/> <img src="/static/images/news/${news.url}" class="image-detail-container"> <h3 class="detail-text-box">${news.subTitle}</h3> <p class="detail-text-box">${news.content}</p> <button onClick="location.href='/notice/news-list'" class="list-button">목록으로 돌아가기</button> </div> </div> <%@ include file="/WEB-INF/view/layout/footer.jsp" %>
-게시판의 경우 기본적인 기능들 중 하나라 크게 어렵지는 않았지만, 페이징 처리나 포맷팅 등 디테일한 부분에서 신경써야 할 것들이 많다고 느껴졌다. 핵심 기능 구현 & 시간 부족으로 인해 신경을 많이 기울이진 못했지만, 다음 번에는 완벽한 게시판을 만들고 싶다!
728x90반응형'💡My project > 셸위 : 게임 친구 매칭 사이트' 카테고리의 다른 글
[셸위:게임 친구 매칭 사이트] 토스 페이먼츠 API - 서브몰 지급 정산 기능 (0) 2024.09.25 [셸위:게임 친구 매칭 사이트] 토스 페이먼츠 API - 잔액 조회 기능 (0) 2024.09.25 [셸위:게임 친구 매칭 사이트] 토스 페이먼츠 API - 서브몰 생성 기능 (0) 2024.09.25 [셸위:게임 친구 매칭 사이트] 토스 페이먼츠 API - 결제 취소 기능 (0) 2024.09.25 [셸위:게임 친구 매칭 사이트] 카카오 페이 API - 결제 취소 기능 (5) 2024.09.25 다음글이전글이전 글이 없습니다.댓글