티스토리 뷰
반응형
목표: 목록에서 이전 / 다음 구현하기
내부 프로그램부터 수정
/* program5.java */
package ex1;
import java.sql.SQLException;
import com.newlecture.app.console.NoticeConsole;
public class program5 {
/* 탑다운 방식 구현 */
public static void main(String[] args) throws ClassNotFoundException, SQLException {
NoticeConsole console = new NoticeConsole();
//console객체가 page를 가지고 있는게 바람직하다.
EXIT:
while(true) {
console.printNoticeList();
int menu = console.inputNoticeMenu(); //
/* 메뉴 함수 구현*/
switch(menu){
case 1: //상세조회C
break;
case 2: //이전
/*이전목록으로 돌아가는 함수 */
console.movePrevList();
//page--;
break;
case 3: //다음
/*다음목록으로 넘어가는 함수*/
console.moveNextList();
//page++;
break;
case 4: //글쓰기
break;
case 5: //종료
System.out.println("Bye~~");
break EXIT;
default:
System.out.println("<<사용방법 오류: 1~4까지만 입력하세요>>");
break;
}
}
}
}
수정부분
case 2: //이전
/*이전목록으로 돌아가는 함수 */
console.movePrevList();
//page--;
break;
case 3: //다음
/*다음목록으로 넘어가는 함수*/
console.moveNextList();
//page++;
break;
console객체가 page를 가지고 있는 모양이 가장 바람직하다.
console.movePrevList(); console.moveNextList(); 함수이름을 만들고 함수추가!
/* NoticeConsole.java */
package com.newlecture.app.console;
import java.sql.SQLException;
import java.util.List;
import java.util.Scanner;
import com.newlecture.app.entity.Notice;
import com.newlecture.app.service.NoticeService;
public class NoticeConsole {
private NoticeService service;
/* page를 가질 수있는 상태변수 page추가*/
private int page;
public NoticeConsole() {
service = new NoticeService();
page=1;
}
/* 내용 UI*/
public void printNoticeList() throws ClassNotFoundException, SQLException {
List<Notice> list = service.getList(page);
System.out.println("──────────────────────────────────────");
System.out.printf("<공지사항> 총 %d 게시글\n", 12);
System.out.println("──────────────────────────────────────");
for(Notice n : list) {
System.out.printf("%d. %s / %s / %s\n",
n.getId(),
n.getTitle(),
n.getWriterId(),
n.getRegDate());
}
System.out.println("──────────────────────────────────────");
System.out.printf(" %d/%d pages \n", 1, 2);
}
/* 메뉴 UI*/
public int inputNoticeMenu() {
Scanner scan = new Scanner(System.in);
System.out.printf("1. 상세조회/ 2.이전/ 3.다음/ 4.글쓰기 / 5.종료 >");
String menu_ = scan.nextLine();
int menu = Integer.parseInt(menu_);
return menu;
}
/*이전목록으로 돌아가는 함수 구현*/
public void movePrevList() {
if(page == 1) { //1페이지 일경우 이전페이지없음 조건검사
System.out.println("이전 페이지가 없습니다.");
return;
}
page--;
}
/*다음목록으로 돌아가는 함수 구현*/
public void moveNextList() {
page++;
}
}
수정부분
/*이전목록으로 돌아가는 함수 구현*/
public void movePrevList() {
if(page == 1) { //1페이지 일경우 이전페이지없음 조건검사
System.out.println("이전 페이지가 없습니다.");
return;
}
page--;
}
/*다음목록으로 돌아가는 함수 구현*/
public void moveNextList() {
page++;
}
movePrevList()는 1페이지일 경우 "이전"을 선택하면 오류를 출력하도록 구현완료
moveNextList()는 마지막 페이지가 몇 인지 알수 없음.
문제 -> "다음"을 선택하면 오류를 출력하도록 구현하기 위해서는 게시글의 개수를, 그리고 페이지 수를 구해야한다.
public void printNoticeList() throws ClassNotFoundException, SQLException {
List<Notice> list = service.getList(page);
servie.getlist(page)에 이전에는 직접 숫자를 입력해서 전달했지만 변수page를 전달 하도록 수정
빨간박스 1페이지에서 "이전" -> 오류출력: 이전 페이지가 없습니다.
파란박스 1페이지에서 "다음" -> 2페이지출력
노란박스 2페이지에서 "다음" -> 다음 페이지가 없지만 빈 페이지 출력(버그)
보안해야할 부분: 마지막 페이지 설정, 개시글, 현재 페이지, 총 페이지
반응형
'JDBC' 카테고리의 다른 글
이전 / 다음 구현하기, 마지막 페이지 구하기 (0) | 2021.05.08 |
---|---|
이전 / 다음 구현하기, 게시글 갯수 구하기 (0) | 2021.05.08 |
페이징 쿼리 이용하기 (0) | 2021.05.06 |
페이징을 위한 쿼리 만들기 (0) | 2021.05.06 |
공지사항 메뉴 붙이기 (0) | 2021.05.03 |
댓글
공지사항