MainController 코드
package controller; //화면이동을 담당
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import service.UserService;
import util.Print;
import util.ScanUtil;
import util.View;
public class MainController extends Print {
static public Map<String, Object> sessionStorage = new HashMap<>(); //세션이란것은 다른곳을 가도 계속 들고있는것을 세션이라고 한다.
UserService userService = UserService.getInstance();
public static void main(String[] args) {
new MainController().start();
}
private void start() {
View view = View.MAIN;
while (true) {
switch (view) {
case MAIN:
view = home();
break;
case USER_JOIN:
view = userJoin();
default:
case USER_LIST:
view = userList();
break;
case USER_LOGIN:
view = userLogin();
case USER_DEL:
view = userDel();
}
}
}
private View userDel() {
System.out.println("회원 탈퇴 페이지");
Map<String,Object > user = (Map<String,Object>) sessionStorage.get("user");
String id = (String) user.get("ID");
userService.userDelete(id);
return View.MAIN;
}
private View userLogin() {
System.out.println("로그인 페이지");
String id = ScanUtil.nextLine("ID >> ");
String pass = ScanUtil.nextLine("pass >> ");
List<Object>param = new ArrayList();
param.add(id);
param.add(pass);
// DB 에서 로그인 여부 확인
boolean login = userService.userLogin(param);
if(!login) {
return View.USER_LOGIN;
}
Map<String,Object> user = (Map<String,Object>)sessionStorage.get("user");
System.out.println(user.get("NAME") + "님 환영합니다.");
System.out.println("1.회원 탈퇴");
System.out.println("2.정보 수정");
System.out.println("3.로그 아웃");
int sel = ScanUtil.nextInt("메뉴 선택 :");
switch (sel) {
case 1:
return View.USER_JOIN;
case 2:
return View.USER_LIST;
case 3:
return View.USER_LOGIN;
default:
return View.MAIN;
}
}
private View userUpdate() {
System.out.println("회원 수정 페이지");
return View.MAIN;
}
private View userList() {
System.out.println("유저 리스트 ");
/*
* 디비에서 유저 리스트 값 출력.
*/
List<Map<String, Object>> userList = userService.userList();
System.out.println("ID\tName");
System.out.println("====================");
for(Map<String, Object> map : userList) {
String id = (String) map.get("ID");
// String pass = (String) map.get("PASS");
String name = (String) map.get("NAME");
System.out.println(id + "\t" + name);
}
return View.MAIN;
}
private View userJoin() {
System.out.println("회원가입 페이지");
String id = ScanUtil.nextLine("ID >> ");
String pass = ScanUtil.nextLine("Pass >> ");
String name = ScanUtil.nextLine("name >> ");
List<Object> param = new ArrayList();
param.add(id);
param.add(pass);
param.add(name);
userService.userJoin(param);
return View.MAIN;
}
private View home() {
System.out.println("1. 회원가입");
System.out.println("2. 회원조회");
System.out.println("3. 로그인");
int sel = ScanUtil.nextInt("메뉴 선택 : ");
switch (sel) {
case 1:
return View.USER_JOIN;
case 2:
return View.USER_LIST;
case 3:
return View.USER_LOGIN;
default:
return View.MAIN;
}
}
}
UserDao코드
package dao;
import java.util.List;
import java.util.Map;
import util.JDBCUtil;
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();
public List<Map<String, Object>> userList() {
String sql = "SELECT * \r\n" +
" FROM JAVA_USER" +
" WHERE DELYN ='N'";
return jdbc.selectList(sql);
}
public void userJoin(List<Object> param) {
String sql = " INSERT INTO JAVA_USER"
+ " VALUES( ? , ? , ? , 'N') "; //순차적으로 값이 들어감 [?3개 = 파라미터 3개]
jdbc.update(sql, param);
}
public Map<String,Object> userLogin(List<Object> param) {
String sql = " SELECT * \r\n" +
" FROM JAVA_USER\r\n" +
" WHERE ID = ? \r\n" +
" and pass = ? " +
" and delyn ='N'";
return jdbc.selectOne(sql, param);
}
public void userDelete(String id) {
String sql = "UPDATE JAVA_USER\r\n" +
"SET DELYN = 'y'\r\n" +
"WHERE ID = '"+id+"'"; //이런방법도 가능하다.
jdbc.update(sql);
}
}
UserService
package service;
import java.util.List;
import java.util.Map;
import controller.MainController;
import dao.UserDao;
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();
public List<Map<String, Object>> userList(){ //map은 한줄한줄 list는 전체
return dao.userList();
}
public void userJoin(List<Object> param) {
dao.userJoin(param);
}
public boolean userLogin(List<Object>param) {
Map<String, Object> map = dao.userLogin(param);
if(map == null || map.isEmpty()) { //map이 널인지 체크하고 데이터가 있다없는 그 뒤에 체크를 한다.
return false; //없을경우에는 로그인을 실패한다.
}else {
MainController.sessionStorage.put("user", map);
return true; //맞을경우 세션에 데이터를 저장한다.
}
}
public void userDelete(String id) {
dao.userDelete(id);
}
}
View
package util;
public enum View { // 화면이동을 위해서 필요한 페이지다.
MAIN, // 기본화면
USER_JOIN, // 회원가입
USER_LOGIN,
USER_LIST,
USER_UPDATE,
USER_DEL
}