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);
}
}