일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 힙덤프
- Java
- Calendar
- deque
- javascript
- 리소스모니터링
- spring boot
- sql
- 큐
- union_find
- List
- html
- math
- set
- Union-find
- alter
- date
- string
- Properties
- dfs
- JPA
- scanner
- BFS
- 스택
- priority_queue
- NIO
- CSS
- map
- GC로그수집
- 스프링부트
- Today
- Total
매일 조금씩
12/24 - JSP(5) : 최신글 표시, 페이징 있는 게시판 만들기 본문
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> </td>");
sbHtml.append(" <td>"+ seq +"</td>");
sbHtml.append(" <td class='left'>");
sbHtml.append( "<a href='board_view1.jsp?seq=" + seq + "'> "+ subject + "</a> ");
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> </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><</a></span>");
}else{
out.println("<span><a href='board_list1.jsp?cpage="+ (cpage-1) +"'><</a></span>");
}
out.println(" ");
%>
2) > 구현
<%
out.println(" ");
if(cpage == totalPage){
out.println("<span><a>></a></span>");
}else{
out.println("<span><a href='board_list1.jsp?cpage="+ (cpage+1) +"'>></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><<</span>");
}else{
out.println("<span><a href='board_list1.jsp?cpage="+ (startBlock - blockPerPage) +"'><<</a></span>");
}
out.println(" ");
%>
<%
// >> 구현
out.println(" ");
if(endBlock == totalPage){
out.println("<span>>></span>");
}else{
out.println("<span><a href='board_list1.jsp?cpage="+ (startBlock + blockPerPage) +"'>>></a></span>");
}
%>
페이지블럭의 시작, 끝 페이지를 위에 정의하고 구현하면 된다.
5) 글쓰기나 수정 등에서 목록을 눌렀을 때 내가 있었던 페이지로 가려면 cpage를 가져가야한다.
'빅데이터 플랫폼 구축을 위한 자바 개발자 양성과정' 카테고리의 다른 글
12/29 - JSP(7) : 파일첨부 방법, 파일첨부 되는 model1 게시판 만들기(기본 게시판) (1) | 2021.01.04 |
---|---|
12/28 - JSP(6) : JSP 기본객체, model1기법으로 게시판 만들기 (0) | 2021.01.04 |
12/23 - JSP(4) : 게시판 만들기 (0) | 2021.01.04 |
12/22 - JSP(3) : 데이터베이스 연결, 커넥션 풀, 게시판 만들 준비 (0) | 2021.01.04 |
12/21 - JSP(2) : JSP 문법 <%@ %>,<% %>, <%= %> 와 request, 달력만들기(Date, Calendar) (0) | 2020.12.22 |