MainController
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 { //Print 상속클래스
//sessionStorage 에 대해서 Map타입 객체 생성 (static: 고유값)
static public Map<String, Object> sessionStorage = new HashMap<>();
//UserService 클래스 호출(싱글톤)
UserService userService = UserService.getInstance();
public static void main(String[] args) {
new MainController().start(); //start 실행
}
start()
private void start() {
View view = View.MAIN; //처음 나와야하는거라서
while (true) { //무한로딩이라서 계속 대입 가능
switch (view) {
case MAIN:
view = home(); //home 메소드를 view 대입
break;
case USER_JOIN:
view = userJoin(); //userJoin 메소드를 view 대입
break;
case USER_LIST:
view = userList(); //userList 메소드를 view 대입
break;
case USER_LOGIN:
view = userLogin();//userLogin 메소드를 view 대입
break;
case USER_DEL:
view = userDel();//userDel 메소드를 view 대입
break;
case USER_UPDATE:
view = userUpdate();//userUpdate 메소드를 view 대입
break;
default:
break;
}
}
}
switch문과 반복문 이용해서 화면 이동 하게 만듬
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;
}
userLogin()
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);
// boolean login = true;
if(!login) {
return View.USER_LOGIN;
}
Map<String, Object>user = (Map<String, Object>)sessionStorage.get("user"); //session에서 가져옴
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_DEL;
case 2:
return View.USER_UPDATE;
case 3:
return View.MAIN;
default:
return View.MAIN;
}
}
userList()
private View userList() {
System.out.println("유저 리스트");
/*
* 디비에서 유저 리스트 값 출력.
*/
List<Map<String, Object>>userList = userService.userList(); // dao -> service -> controller db 옴
System.out.println("ID \t NAME");
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;//MAIN 리턴값
}
userJoin()
private View userJoin() {
System.out.println("회원가입 페이지");
//id
String id = ScanUtil.nextLine("ID >>"); //컬럼1
//pass
String pass = ScanUtil.nextLine("pass >>"); //컬럼2
//name
String name = ScanUtil.nextLine("name >>");//컬럼3
List<Object> param =new ArrayList();
param.add(id);
param.add(pass);
param.add(name);
userService.userJoin(param);
return View.MAIN; //MAIN으로 리턴값 보냄 // 로그인 or home()
}
home()
private View home() {
System.out.println("1번 2번 3번 중 선택하시오");
System.out.println("1. 회원가입");
System.out.println("2. 회원조회");
System.out.println("3. 로그인");
System.out.println("4. 회원수정");
System.out.println("5. 회원탈퇴");
int sel = ScanUtil.nextInt("메뉴 선택 : "); // ScanUtil 클래스 이용해서 출력
switch (sel) {
case 1:
return View.USER_JOIN;
case 2:
return View.USER_LIST;
case 3:
return View.USER_LOGIN;
case 4:
return View.USER_UPDATE;
case 5:
return View.USER_DEL;
default:
return View.MAIN;
}
}
}
ScanUtil
import java.util.Scanner;
public class ScanUtil { //Scanner 통합 메소드 만듬
static Scanner sc = new Scanner(System.in);
public static String nextLine(String print) { //static 이용해서 문구 반드시 사용하게 함
System.out.print(print);
return nextLine(); //private static nextLine으로 값 반환
}
private static String nextLine() { //문구 입력하지 않으면 스캐너 못쓰게 막음
return sc.nextLine();
}
public static int nextInt(String print) {
System.out.print(print);
return nextInt();
}
private static int nextInt() {
while(true) {
try { //숫자 잘못쓴경우 필터
int result = Integer.parseInt(sc.nextLine());
return result;
}catch (NumberFormatException e) {
System.out.println("잘못 입력!!");
}
}
}
}
UserService
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();
userList()
public List<Map<String, Object>> userList(){
return dao.userList();
}
userJoin()
public void userJoin(List<Object> param) {
dao.userJoin(param);
}
userLogin()
public boolean userLogin(List<Object> param) {
Map<String, Object> map =dao.userLogin(param);
if(map == null || map.isEmpty()) { //map이 null 인지 체크후 공백 여부 체크
return false;
}else {
//회원정보
MainController.sessionStorage.put("user", map);
return true;
}
}
userDelete
public void userDelete(String id) {
dao.userDelete(id);
}
UserDao
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();
userList()
public List<Map<String, Object>> userList() { // jdbc db 요청
String sql = "SELECT *\r\n" +
"FROM JAVA_USER"
+"WHERE DELYN='N'"; // 회원 탈퇴(Y) 필터링
return jdbc.selectList(sql);
}
userJoin()
public void userJoin(List<Object> param) {
String sql ="INSERT INTO JAVA_USER\r\n" + //
" VALUES(?,?,?, 'N');"; //? : 구멍뚫리는것파라미터 대입, 자동 타입변환 해줌 만약 '?' 하면 문자로 인식
// 명령어 앞뒤로 공백 주기!
jdbc.update(sql, param);
}
userLogin()
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); //반환값이 있어야 되서 return함
}
userDelete()
public void userDelete(String id) { // 값이 하나 밖에 없어서 파라미터 하나만 줌
String sql="UPDATE java_user\r\n" +
"SET\r\n" +
"DELYN = 'Y'\r\n" +
"WHERE ID ='"+id+"'"; //데이터로 직접 넣는 법
jdbc.update(sql);
}
'JAVA > 수업' 카테고리의 다른 글
도서 관리시스템 CRUD (0) | 2024.01.08 |
---|---|
Coffee 메뉴 등록 CRUD (0) | 2024.01.05 |
Board CRUD (0) | 2024.01.05 |
study10 (0) | 2023.12.29 |
Study07 (0) | 2023.12.26 |