JAVA/수업

FREEBOARD2 CRUD

lavender1122 2024. 1. 9. 18:34

MainController

public class MainController extends Print {
	//sessionStorage Map 타입
	static public Map<String, Object> sessionStorage = new HashMap<>();
	UserService userService = UserService.getInstance();
	FressService freeService = FressService.getInstance();
	
	public static void main(String[] args) {
		new MainController().start();
	}

start

private void start() {
		View view = View.MAIN;
		while (true) {
			switch (view) {
			case MAIN:
				view = home();
				break;
			case BOARD_INSERT:
				view = boardInsert();
				break;
			case BOARD_LIST:
				view = boardList();
				break;
			case LOGIN:
				view = login();
				break;
			default:
				break;
			}
		}
	}

boardList

private View boardList() {
		int page = 1;
		//sessionStorage에 값  출력
		if(sessionStorage.containsKey("page")) page = (int) sessionStorage.get("page");
		int start = 1+(page-1)*5;
		int end = page *5;
		
		int boardMax = 10; // 게시판에서 가져온걸 가정 DB에서 count 이용해서 sql 이용해서 가져와야함
		
		List<Object> param = new ArrayList();
		param.add(start);
		param.add(end);
		
		List<BoardVo> boardList = freeService.boardList(param);
		for (BoardVo boardVo : boardList) {
			System.out.println(boardVo);
		}
		System.out.println("1. 이전 페이지");
		System.out.println("2. 다음 페이지");
		int sel = ScanUtil.menu();
		if(sel == 1) {
			page = page -1;
			if(page<1) page = 1; // 1페이지면 더이상 내려갈 페이지 없다
			sessionStorage.put("page",page);
		}
		if(sel == 2) {
			if(end<boardMax) page = page +1;
			sessionStorage.put("page",page);
		}
		
		
		return View.BOARD_LIST;
	}

login

private View login() {
		
		String id = ScanUtil.nextLine("ID");
		String pass = ScanUtil.nextLine("pass");
		
		List<Object> param = new ArrayList();
		param.add(id);
		param.add(pass);
		
		boolean loginPass= userService.login(param); //로그인 성공하면 true 실패시 false 결과 리턴옴
		if(loginPass) {
			UserVo user =(UserVo)sessionStorage.get("user");
			System.out.println(user.getName()+"님 환영합니다.");
		} else {
			System.out.println("1. 다시 로그인하시겠습니까?");
			System.out.println("2. 회원가입 (생략)");
			System.out.println("3. 홈");
			
			int sel = ScanUtil.menu();
			if(sel == 1) return View.LOGIN;
			if(sel == 2) return View.LOGIN;
			if(sel == 3) return View.MAIN;
			
		}
		
		//로그인 후 다시 사용하는 곳으로 이동하기 위해서 사용
		//로그인을 맨처음 보낸곳으로
		View view = (View)sessionStorage.get("view");
		//등록된것이 없으면 메인 페이지로 이동
		if(view == null) return View.MAIN;
		
		
		return view;
	}

boardInsert

private View boardInsert() {
		//로그인 유무
		int mem_no;
		if(sessionStorage.containsKey("user")) { //"user"(로그인) 유무 UserService에 로그인 데이터 넣어서 포함 확인 가능
			UserVo user =(UserVo) sessionStorage.get("user");
			mem_no = user.getNo(); 
			
		}else {
			//로그인 안됬을 때 로그인 페이지로 이동
			sessionStorage.put("view",View.BOARD_INSERT);//다시 돌아올 페이지 sessionStoage로 등록
			return View.LOGIN;
		}
		//
		String name = ScanUtil.nextLine("제목");
		String content = ScanUtil.nextLine("내용");
		
		return View.BOARD_LIST;
	}

home

	private View home() {
		System.out.println("1. 게시판등록");
		System.out.println("2. 전체 게시판 조회");
		int sel = ScanUtil.nextInt("선택 : ");
		switch (sel) {
		case 1:
			return View.BOARD_INSERT;
		case 2:
			return View.BOARD_LIST;
		default:
			return View.MAIN;
		
		}
	}
}

UserService

public class UserService {
	private static UserService instance =null;
		
		private UserService() {
			
		}
		
		public static UserService getInstance() {
			if(instance == null) {
				instance = new UserService();
			}
			return instance;
		}
        UserDao dao =UserDao.getInstance();

login

public boolean login(List<Object> param) { // boolean 하는 이유: 
			UserVo user = dao .login(param); // dao class에 있는 login 메소드 호출
			if(user != null) { //로그인이 성공 했으면
				//user 내용 sessionStorage 데이터 추가
				MainController.sessionStorage.put("user",user);
				return true;
			}
			return false;
		}
}

FressService

public class FressService {
	private static FressService instance =null;
		
		private FressService() {
			
		}
		
		public static FressService getInstance() {
			if(instance == null) {
				instance = new FressService();
			}
			return instance;
		}
		
	FreeDao dao =FreeDao.getInstance();

boardList

public List<BoardVo> boardList(List<Object> param){
		return dao.boardList(param);
	}
}

FreeDao

public class FreeDao {
	private static FreeDao instance =null;
		
		private FreeDao() {
			
		}
		
		public static FreeDao getInstance() {
			if(instance == null) {
				instance = new FreeDao();
			}
			return instance;
		}
		
	JDBCUtil jdbc = JDBCUtil.getInstance();

boardList

public List<BoardVo> boardList(List<Object> param) {
		String sql = "SELECT *\r\n" + 
				"    FROM (SELECT ROWNUM RN, A.* FROM\r\n" + 
				"                (SELECT NO,  NAME, CONTENT, MEM_NO, REG_DATE REG_DATE2\r\n" + 
				"                FROM JAVA_FREEBOARED \r\n" + 
				"                ORDER BY NO) A)\r\n" + 
				"    WHERE RN BETWEEN ? AND ?";
		return jdbc.selectList(sql,param,BoardVo.class);
	}
}

UserDao

public class UserDao {
	private static UserDao instance =null;
		
		private UserDao() {
			
		}
		
		public static UserDao getInstance() {
			if(instance == null) {
				instance = new UserDao();
			}
			return instance;
		}
		
	JDBCUtil jdbc = JDBCUtil.getInstance();

login

public UserVo login(List<Object> param) {
		String sql = "SELECT * FROM JAVA_USER\r\n" + 
				" WHERE ID = ? \r\n" + 
				" AND PASS = ? ";
		//id pass 리턴
		 return jdbc.selectOne(sql,param, UserVo.class);
	}
}