Servlet/JSP 9일차

0

JSTL로 Pager 번호 만들기

  • 게시판을 보면 글을 특정 개수 단위로 나눠놨는데 이것이 Pager인 것이다.
<c:set var="page" value="${(param.p == null)?1:param.p }"/>
<c:set var="startNum" value="${page-(page-1)%5 }"/>
					
			<ul class="-list- center">
				<c:forEach var="i" begin="0" end="4">
					<li><a class="-text- orange bold" href="?p=${i+startNum }&t=&q=">${i+startNum }</a></li>
				</c:forEach>
			</ul>
  • 위의 코드를 보면 <c:set>을 통해 page와 startNum이라는 변수를 지정해주었다.
  • 여기서 page 변수는 넘어오는 p값이 null이라면 1이고 null이 아니라면 해당 p값을 page로 지정하였다.
  • startNum은 1 2 3 4 5 처럼 게시판 아래에 페이지 번호를 작성하기 위한 변수인데 이는 page-(page-1)%5 연산을 하면 5개의 숫자가 나온다.
  • 아래에서는 <c:forEach>문을 사용하여 연산된 startNum에 i를 더해줌으로써 page 번호를 출력하게 하였다.

JSTL로 이전/다음 Pager 링크 만들기

  • 이전페이지와 다음페이지로 갈 수 있는 버튼을 생성해야한다.
  • 하지만 이전페이지 또는 다음페이지가 없을경우에는 오류문구를 띄어야한다.
    여기서 사용할 수 있는 JSTL이 <c:if test="">이다.
    <c:set var="page" value="${(param.p == null)?1:param.p }"/>
	<c:set var="startNum" value="${page-(page-1)%5 }"/>
	<c:set var="LastNum" value="23"/>
					
		<div>
						
			<c:if test="${page-1>0 }">
				<a href="?p=${page-1 }" class="btn btn-next" >이전</a>
			</c:if>
			<c:if test="${page-1<=0 }">
				<span class="btn btn-prev" onclick="alert('이전 페이지가 없습니다.');">이전</span>
			</c:if>
		</div>
									
					
		<ul class="-list- center">
			<c:forEach var="i" begin="0" end="4">
				<li><a class="-text- orange bold" href="?p=${i+startNum }&t=&q=">${i+startNum }</a></li>
			</c:forEach>
		</ul>
		<div>
			<c:if test="${startNum+5<LastNum}">
				<a href="?p=${startNum+5 }" class="btn btn-next" >다음</a>
			</c:if>
			<c:if test="${startNum+5>=LastNum }">
				<span class="btn btn-next" onclick="alert('다음 페이지가 없습니다.');">다음</span>
			</c:if>
		</div>
  • 위의 예제에서는 아직 DB에 있는 row의 개수를 구하기 전이라서 이 때 마지막 페이지의 수를 임의의 수인 23으로 설정하였다.

JSTL:forTokens로 첨부파일 목록 출력하기

  • forTokens는 문자열을 특정 문자 기준으로 분리할 수 있다.
  • 예를 들어 DB에 파일 목록이 있는데 이는 ','로 구분되서 저장되어있다.
  • 이를 각각 하이퍼링크를 달아줘야하는데 forTokens를 사용하면 가능하다.
<th>첨부파일</th>
	<td colspan="3" style="text-align:Left;text-indent:10px;">
	<c:forTokens var="fileName" items="${n.files }" delims="," varStatus="st">
			<a href="${fileName }">${fileName }</a>
			<c:if test="${! st.last }">
				/
			</c:if>
	</c:forTokens>
	</td>
  • <c:forTokens>에서 items는 사용할 자료이고 delims는 구분할 문자이다.

JSTL 날짜formatting

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
  • formatting을 하기위해서는 위의 코드를 작성한다.
  • 아래는 날짜를 formatting을 하는 코드이다.
<td class="text-align-left text-indent" colspan="3">
		<fmt:formatDate pattern="yyyy-MM-dd hh:mm:ss" value="${n.regdate }"/>
</td>

JSTL 숫자 형식 변경하기(formatting)

  • 숫자를 123,456,789 와 같이 3자리씩 쉼표로 띄어서 보고싶다면 아래와 같이 하면된다.
<fmt:formatNumber value="${n.hit}"/>
  • 여러개의 옵션이 있다. type="number", type="percent" 등등...
  • 구글에 검색해서 사용하자

0개의 댓글