티스토리 뷰

JDBC

이전 / 다음 구현하기

Programmers 2021. 5. 7. 23:12
반응형

목표: 목록에서 이전 / 다음 구현하기

내부 프로그램부터 수정

/* 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페이지에서 "다음" -> 다음 페이지가 없지만 빈 페이지 출력(버그)

보안해야할 부분: 마지막 페이지 설정, 개시글, 현재 페이지, 총 페이지

반응형
댓글
공지사항