보드 수정하기

·2024년 11월 14일

스프링

목록 보기
31/33

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
1. 보드리스트 먼저 가서 상단에 코어 립을 쓰겠다고 선언 먼저 해준다.

  1. 기존에 있던 jsp코드는 전부 주석처리한다.

  1. 여기 경로 먼저 수정

  1. for문 주석처리 하고 아래에 있는 포이치문을 작성한다 ㄱ

5.이 부분에 닫ㄴ는 태그 넣어주기

  1. num부분에 지우고ㅓ 아렇게 수정 ㅠㅠ

6.이거 주석

	<table class="listTable">
		<tr>
			<th>No</th>
			<th>제목</th>
			<th>작성자</th>
			<th>조회</th>
			<th>추천</th>
			<th>날짜</th>
		</tr>   
		
		<c:forEach items="${blist}" var="bv" varStatus="status">
		<tr>
			<td>${pm.totalCount-((status.index)+(pm.scri.page-1)*pm.scri.perPageNum)}</td>
			<td class="title">
			<c:forEach var="i" begin="1" end="${bv.level_}" step="1">
			&nbsp;&nbsp;
			<c:if test="${i==bv.level_}"></c:if>
			</c:forEach> 
			
			<a href="${pageContext.request.contextPath}/board/boardContents.aws?bidx=${bv.bidx}">${bv.subject}</a></td>
			<td>${bv.writer}</td>
			<td>${bv.viewcnt}</td>
			<td>${bv.recom}</td>
			<td>${bv.writeday}</td>
		</tr>		
		</c:forEach>
	
	</table>
  1. 흠~~ 다 지우고 이렇게ㅐ 했는데/// 뭔지 모르겠당

<c:forEach items="${blist}" var="bv" varStatus="status">

<c:forEach> 태그: JSTL 반복 태그로, items 속성에 주어진 리스트(blist)의 각 요소를 반복하며, 각 요소를 bv라는 변수로 접근할 수 있게 합니다.
varStatus="status": 현재 반복 상태를 나타내는 status 객체를 생성합니다. 이를 통해 반복 횟수나 인덱스 정보를 가져올 수 있습니다

<td>${pm.totalCount-((status.index)+(pm.scri.page-1)*pm.scri.perPageNum)}</td>

태그: 테이블의 셀을 나타냅니다. ${pm.totalCount-((status.index+1)+(pm.scri.page-1)*pm.scri.perPageNum)+1}: 게시물 번호를 계산하는 부분입니다. pm.totalCount: 총 게시물 개수. status.index: 현재 반복 중인 항목의 인덱스(0부터 시작). pm.scri.page: 현재 페이지 번호. pm.scri.perPageNum: 페이지당 표시할 게시물 수. 이 계산식을 통해 각 게시물의 번호를 동적으로 계산하여 표시합니다.
<td class="title">
  <c:forEach var="i" begin="1" end="${bv.level_}" step="1">
        &nbsp;&nbsp;
        <c:if test="${i==bv.level_}"></c:if>
    </c:forEach> 
    <a href="${pageContext.request.contextPath}/board/boardContents.aws?bidx=${bv.bidx}">${bv.subject}</a>
</td>

제목 안쪽의 <c:forEach> 태그: bv.level의 값만큼 반복하며, 들여쓰기를 추가합니다. (반복할 때마다  로 공백 추가)
<c:if> 태그: 조건에 따라 특정 내용을 출력합니다. 여기서는 i가 bv.level_과 같을 때 ㄴ 기호를 출력해 제목을 트리 형태로 표현하는 역할을 합니다.
<a href="..."> 태그: 제목을 클릭하면 게시물의 상세 페이지로 이동합니다. ${bv.bidx}는 각 게시물의 고유 ID입니다.

<td>${bv.writer}</td>
<td>${bv.viewcnt}</td>
<td>${bv.recom}</td>
<td>${bv.writeday}</td>

각 셀에 bv 객체의 속성값을 표시합니다.
${bv.writer} : 작성자 이름
${bv.viewcnt} : 조회수
${bv.recom} : 추천수
${bv.writeday} : 작성일

이렇게 테이블을 통해 각 게시물의 정보가 정렬된 형태로 출력됩니다. blist 리스트에 있는 모든 게시물이 forEach를 통해 반복되어 출력되며, 제목 앞의 ㄴ 기호와 공백은 게시물 계층 구조를 시각적으로 보여줍니다.

하단 페이지 네비게이션 수정


페이지 부분 수정 했어용

	<c:set var="queryParam" value="keyword=${pm.scri.keyword}&searchType=${pm.scri.searchType}"></c:set>
	<div class="page">
	
		 <ul>	
		 
		<c:if test="${pm.prev == true}"> 
		<li><a href="${pageContext.request.contextPath}/board/boardList.aws?page=${pm.startPage-1}&${queryParam}"></a></li>
		</c:if>

		<c:forEach var="i" begin="${pm.startPage}" end="${pm.endPage}" step="1">
		<li <c:if test="${i==pm.scri.page}"> class='on' </c:if> > 
		<a href="${pageContext.request.contextPath}/board/boardList.aws?page=${i}&${queryParam}">${i}</a>
		</li>
		</c:forEach>	
			
	 	<c:if test="${pm.next&&pm.endPage>0}">
	 	<li><a href="${pageContext.request.contextPath}/board/boardList.aws?page=${pm.endPage+1}&${queryParam}"></a></li>
	 	</c:if>
	 	
		</ul> 
	</div>

이 코드는 JSP와 JSTL을 사용해 페이지네이션(페이지 번호)을 표시하는 부분입니다. 각 태그와 표현식을 하나씩 설명해 드리겠습니다.

<c:set var="queryParam" value="keyword=${pm.scri.keyword}&searchType=${pm.scri.searchType}"></c:set>

<c:set>: JSTL에서 변수를 설정하는 태그입니다. 여기서는 queryParam이라는 변수를 만들고, 검색 키워드(keyword)와 검색 유형(searchType)을 포함한 문자열을 설정합니다.
pm.scri.keyword:현재검색키워드.{pm.scri.keyword}: 현재 검색 키워드.{pm.scri.searchType}: 현재 검색 유형.
이 queryParam은 페이지 번호 이동 시 검색 조건을 유지하기 위해 사용됩니다.

`<c:if test="${pm.prev == true}">

<li><a href="${pageContext.request.contextPath}/board/boardList.aws?page=${pm.startPage-1}&${queryParam}"></a></li>

</c:if>`

<c:if>: 조건문으로 pm.prev가 true일 때만 실행됩니다. pm.prev가 true라는 것은 이전 페이지가 존재한다는 의미입니다.

  • :
  • 안에 태그로 "◀"을 표시하며, 이전 페이지로 이동하는 링크를 만듭니다. ${pm.startPage-1}: 이전 페이지로 가기 위해 현재 페이지의 첫 페이지보다 1을 뺀 값을 사용합니다.
    <c:forEach var="i" begin="${pm.startPage}" end="${pm.endPage}" step="1">
        <li <c:if test="${i==pm.scri.page}"> class='on' </c:if> >
            <a href="${pageContext.request.contextPath}/board/boardList.aws?page=${i}&${queryParam}">${i}</a>
        </li>
    </c:forEach>

    <c:forEach>: pm.startPage에서 pm.endPage까지의 숫자를 반복하며, 각 숫자가 페이지 번호로 출력됩니다.

  • class='on' >: 현재 페이지일 경우, class="on"을 추가하여 스타일을 다르게 적용합니다. ${i}: 현재 반복 중인 페이지 번호를 나타내며, 페이지 링크로 표시됩니다. 이 부분은 페이지 번호 버튼을 만들어 줍니다. on 클래스는 현재 페이지를 강조할 때 사용됩니다.
    <c:if test="${pm.next && pm.endPage > 0}">
        <li><a href="${pageContext.request.contextPath}/board/boardList.aws?page=${pm.endPage+1}&${queryParam}"></a></li>
    </c:if>

    <c:if test="{pm.next && pm.endPage > 0}">: pm.next가 true이며, pm.endPage가 0보다 클 때 실행됩니다. pm.next가 true라는 것은 다음 페이지가 존재한다는 뜻입니다.{pm.endPage+1}: 현재 페이지의 마지막 페이지 번호에서 1을 더한 페이지 번호로, 다음 페이지 그룹으로 이동할 수 있습니다.

  • 0개의 댓글