매일 조금씩

12/24 - JSP(5) : 최신글 표시, 페이징 있는 게시판 만들기 본문

빅데이터 플랫폼 구축을 위한 자바 개발자 양성과정

12/24 - JSP(5) : 최신글 표시, 페이징 있는 게시판 만들기

mezo 2021. 1. 4. 16:14
728x90
반응형

 

 

 

24시간 이내에 작성된 글은 hot 표시 (new 없어서)


  • list 창에서 sql적으로 처리
  • datediff 사용 
  • select now(), wdate, datediff(now(), wdate) from board1;

 

1) 기존 select문에 datediff(now(), wdate) wgap추가

 

수정에서 내가 선택한 이모티콘이 선택된 상태로 나와야하는게 관건이다!

2) radio 버튼 input 버튼에 다음과 같은 코드를 추가한다.

<%=emot.equals("45")?"checked='checked'":"" %>

그러면 다음과 같은 input태그가 된다.

<input type="radio" name="emot" value="emot45" class="input_radio" <%=emot.equals("45")?"checked='checked'":"" %>/>

3) 위 코드는 emot45인데 emot01부터 emot45까지 모든 input태그에 코드를 추가해줘야한다.

자바스크립트로 하는 방법도 있는데 그건 나중에! 

 

 

 

 

 

 

게시판 페이징  -  페이지번호


design_simple0를 복사해서 페이지번호 html코드를 추가한 뒤 paging1에서 작업하였다. 

먼저 100개의 데이터를 넣기 위해서 simple1에서  insert1_ok를 write1_ok를 복사해서 만든다.

 

 

1. 페이지 번호

페이지번호, 데이터 갯수(고정), 시작번호   를 생각해야 한다.

만약, cpage, recorderPerPage, start라고 치면 

start = recoderPerPage * (cpage-1)  라고 시작 번호를 수식으로 정의할 수 있다.

 

기존의 board_list1 에 다음과 같은 코드추가가 필요하다.

1) 먼저 java코드 상단 선언부분에 아래와 같이 cpage와 recordPerPage값을 정의한다.

// cpage값이 없으면 1로 셋 하고 아니면 해당 페이지로 넘어가라
int cpage = 1;
if(request.getParameter("cpage") != null && !request.getParameter("cpage").equals("")){
    cpage = Integer.parseInt(request.getParameter("cpage"));
}

int recordPerPage = 10;

 

2) 그다음 try~catch 문안에 아래와 같이 읽을 위치를 지정할 변수를 지정하고

// 읽을 위치 지정
		int skip = (cpage-1) * recordPerPage;
		if(skip != 0)rs.absolute(skip);

 

3) while문을 for 문으로 위와 같이 바꾼다. while문이 for문이 된것 뿐이지 그안의 코드는 동일하다.

// 10개 또는 마지막 데이터까지
//		while(rs.next()){
		for(int i=0; i<recordPerPage && rs.next(); i++){
			String seq = rs.getString("seq");
			String subject = rs.getString("subject");
			String writer = rs.getString("writer");
			String wdate = rs.getString("wdate");
			String hit = rs.getString("hit");
			int wgap = rs.getInt("wgap");
			
			sbHtml.append("<tr>");
			sbHtml.append("		<td>&nbsp;</td>");
			sbHtml.append("		<td>"+ seq +"</td>");
			sbHtml.append("		<td class='left'>");
			sbHtml.append(			"<a href='board_view1.jsp?seq=" + seq + "'> "+ subject + "</a>&nbsp;");
			if(wgap == 0){
				sbHtml.append(			"<img src='../../images/icon_hot.gif' alt='HOT'></td>");
			}
			sbHtml.append("		<td>"+ writer +"</td>");
			sbHtml.append("		<td>"+ wdate +"</td>");
			sbHtml.append("		<td>"+ hit +"</td>");
			sbHtml.append("		<td>&nbsp;</td>");
			sbHtml.append("</tr>");
		}

 

4) 전체 페이지 갯수를 위해 java코드 상단 선언 부분에 아래 코드를 추가 하고

// 전체 페이지 갯수 (0이 될수 없음)
	int totalPage = 1;

 

5) try~catch문 안에 아래 코드를 추가한 후,

totalPage = ((totalRecord - 1) / recordPerPage + 1);

 

6) html코드에서 페이지번호가 출력되는 부분을 아래코드로 바꾼다.

<%
  for(int i=1; i<=totalPage; i++){
      out.println("<span><a href='board_list1.jsp?cpage="+ i +"'>"+ i + "</a></span>");
  }
%>

 

7) 현재페이지는 []안에 페이지번호 나오고, 링크 안걸리게 하려면

for문에 아래와 같이 if문을 추가한다.

<%
  for(int i=1; i<=totalPage; i++){
      if(i == cpage){
          out.println("<span>[" + i + "]</span>");
      }else{
          out.println("<span><a href='board_list1.jsp?cpage="+ i +"'>"+ i + "</a></span>");
      }
  }
 %>

 

 

2. <<,<,>,>> 

1) < 구현

<%
    if(cpage == 1){
        out.println("<span><a>&lt;</a></span>");
    }else{
        out.println("<span><a href='board_list1.jsp?cpage="+ (cpage-1) +"'>&lt;</a></span>");
    }
    out.println("&nbsp;&nbsp;");
%>

 

2) > 구현

<%
    out.println("&nbsp;&nbsp;");
    if(cpage == totalPage){
        out.println("<span><a>&gt;</a></span>");
    }else{
        out.println("<span><a href='board_list1.jsp?cpage="+ (cpage+1) +"'>&gt;</a></span>");
    }
%>

 

3) 특정 갯수 페이지씩 보여주기 구현

현재 페이지, 보여지는 페이지 갯수, 시작번호

startBlock = ((cpage-1)/blockPerPage) * blockPerPage + 1

endBlock = ((cpage-1)/blockPerPage) * blockPerPage + blockPerPage

 

 

 

 

4) << , >> 구현

<%
  // << , >> 를 위해 페이지 블럭 시작(startBlock), 끝(endBlock) 페이지 정의
  int startBlock = ((cpage - 1) / blockPerPage) * blockPerPage +1;
  int endBlock = ((cpage - 1) / blockPerPage) * blockPerPage + blockPerPage;
  if(endBlock >= totalPage){
      endBlock = totalPage;
  }
%>

<%
  // << 구현
  if(startBlock == 1){
      out.println("<span>&lt;&lt;</span>");
  }else{
      out.println("<span><a href='board_list1.jsp?cpage="+ (startBlock - blockPerPage) +"'>&lt;&lt;</a></span>");
  }
  out.println("&nbsp;");
%>

<%
  // >> 구현
  out.println("&nbsp;");
  if(endBlock == totalPage){
      out.println("<span>&gt;&gt;</span>");
  }else{
      out.println("<span><a href='board_list1.jsp?cpage="+ (startBlock + blockPerPage) +"'>&gt;&gt;</a></span>");
  }
%>

페이지블럭의 시작, 끝 페이지를 위에 정의하고 구현하면 된다.

 

 

5) 글쓰기나 수정 등에서 목록을 눌렀을 때 내가 있었던 페이지로 가려면 cpage를 가져가야한다.

728x90
반응형