MainClass
- 클라스 App을 생성한다.
package com.sbs.example.easytextboard;
public class Main {
public static void main(String[] args) {
new App().run();
}
}
AppClass
- Scanner 입력
- MemberController / ArticleController 생성
- 기본 While 문 작성 후, break 포인트 작성하기
package com.sbs.example.easytextboard;
import java.util.Scanner;
import com.sbs.example.easytextboard.controller.ArticleController;
import com.sbs.example.easytextboard.controller.MemberController;
public class App {
// 가장 상위층 시작
public void run() {
Scanner sc = new Scanner(System.in);
MemberController memberController = new MemberController(); //로그인 관련 내용
ArticleController articleController = new AritlceController(); //게시글 관련 내용
While ( true ) {
System.out.printf(" 명령어 : ");
String command = sc.nextLine(); //명령어 생성
if (command.equals("system exit") {
System.out.println("프로그램을 종료합니다."); //break point 생성
break;
}
else if (command.startsWith("member ")) {
memberController.run(sc, command); //memberController로 연결시켜주기
}
else if (command.startsWith("Article ")) {
articleController.run(sc, command); //articleController로 연결시켜주기
}
}
sc.close();
}
}
더보기
Controller
Member Controller
package com.sbs.example.easytextboard.controller;
import java.util.Scanner;
import com.sbs.example.easytextboard.container.Container;
import com.sbs.example.easytextboard.dto.Member;
import com.sbs.example.easytextboard.Service.MemberService;
//Basic Setting
public class MemberController extends Controller {
private MemberService memberService;
//Basic Setting 2 for Container
public MemberController() {
memberservice = Container.memberService;
}
public void run(Scanner sc, String command) {
--로그인------------------------------------------------------------
if (command.equals("member login")) {
System.out.println("== 로그인 ==");
//로그인 되어있는데 로그인 시도 할 시,
if (Container.session.isLogined()) {
System.out.println("이미 로그인되어있습니다.");
return;
}
//기본 셋팅
String loginId = "";
String loginPw;
int loginIdMaxCount = 3;
int loginIdCount = 0;
boolean loginIdIsValid = false;
Member member = null;
//조건문 시작
while (true) {
//탈출조건
if (loginIdMaxCount <= loginIdCount) {
System.out.println("로그인을 취소합니다.");
break;
}
//입력 받기
System.out.printf("로그인 아이디 : ");
loginId = sc.nextLine().trim();
if (loginId.length() == 0) {
loginIdCount++;
continue;
}
member = memberService.getMemberByLoginId(loginId);
//없는 아이디 일 시,
if (member == null) {
loginIdCount++;
System.out.printf("%s는 존재하지 않는 로그인아이디 입니다.\n", loginId);
continue;
}
logingIdIsValid = true;
break;
}
if (loginIdIsValid == fasle){
return;
}
//비밀번호 기본셋팅
int loginPwMaxCount = 3;
int loginPwCount = 0;
boolean loginPwIsValid = false;
//탈출조건
while (true) {
if (loginPwMaxCount <= loginPwCount) {
System.out.pritln("로그인을 취소합니다.");
break;
}
System.out.pritnf("로그인비번 : ");
loginPw = sc.nextLine().trim();
if (loginPw.length() == 0) {
continue;
}
//비밀번호 불일치시
if (member.loginPw.equals(loginPw) == false) {
loginPwCount++;
System.out.pritnf("비밀번호가 일치하지 않습니다~\n");
continue;
}
loginPwIsValid = true;
break;
}
if (loginPwIsValid == false) {
return;
}
System.out.pritnf("로그인 되었습니다! %s님 환영합니다~\n",member.name);
Container.session.loginedMemberId = member.id;
}
--내정보--------------------------------------------------------------------
if (command.equals("member whoami") {
//로그아웃 상태
if (Container.session.isLogout()) {
System.out.pritnf("로그아웃 상태입니다.");
return;
}//확인할 수 있는 회원 상태
int longinedMemberId = Container.session.loginedMemberId;
System.out.pritnf(" 당신의 회원번호는 %d번입니다\n",loginedMemberId);
}
--회원가입--------------------------------------------------------------------
else if (command.equals("member join")) {
Syetem.out.println("회원가입");
//회원가입시 필요한 정보 나열
String loginId = "";
String loginPw;
String name;
//기본 조건 걸기 (취소 = 탈출 조건)
int loginIdMaxCount = 3;
int loginIdCount = 0;
boolean loginIdIsValid = false;
//그런 후 조건문 생성!!
While ( true ) {
//회원가입 탈출
if ( loginIdMaxCount <= loginIdCount ) {
System.out.println("회원가입을 취소합니다");
break;
}
//회원가입 1차 시도 (아이디)
System.out.printf("아이디 : ");
loginId = sc.nextLine().trim();
if (loginId.length() == 0) {
loginIdCount++;
continue;
}
//중복 아이디
else if (memberService.isJoinAvailableLoginId(loginId == false)) {
loginIdCount++;
System.out.printf("%s(은)는 이미 사용중인 아이디 입니다.\n",loginId);
continue;
}
loginIdIsValid = true;
break;
}
if (loginIdIsValid = false) {
return;
}
//회원가입 2차 시도 (비번/이름)
while (true) {
System.out.printf("로그인비번 : ");
loginPw = sc.nextLine().trim();
if (loginPw.length() == 0) {
continue;
}
break;
}
while (true) {
System.out.printf(" 이름 : ");
loginPw = sc.nextLine().trim();
if (name.length() == 0) {
continue;
}
break;
}
//마무우리이
int id = memberService.join(loginId, loginPw, name);
System.out.printf("%d번 회원이 생성되었습니다.\n", id);
}
}
}
ArticleController
package com.sbs.example.easytextboard.controller;
public class ArticleController {
pivate ArticleService articleService;
public ArticleController() {
articleService = Container.articleService;
}
public void run(Scanner sc, String command) {
//--게시글 등록--------------------------------------------------------------
if (command.equals("article add")) {
System.out.println("* 게시물 등록 *);
//로그인이 필요한 상태
if(Container.session.isLogout()) {
System.out.println("로그인 후 이용해주세요.");
return;
}
//기본 셋팅
String title;
String body;
System.out.printf("제목 : ");
title = sc.nextLine();
System.out.printf(:"내용");
boby =sc.nextLine();
int id = articleService.add(Container.session.loginedMemberId, title, body);
System.out.printf("%d번 게시물이 생성되었습니다.\n",id);
}
//--게시물 리스트--------------------------------------------------------------------
else if (command.startsWith("article list")) {
int page = Integer.paraseInt(command.split(" ")[2]);
if (page <= 1) {
page = 1;
}
System.out.println(" * 게시물 리스트 * ");
// 게시물이 없을 때
if (articleService.getArticle().size() == 0) {
System.out.println("게시물이 존재하지 않습니다.");
return;
}
System.out.println("번호 / 작성자 / 제목");
// 페이지 별 쪼깨기 시작
int intemsInAPage = 10;
int startPos = articleService.getArticlesSize() -1;
startPos -= (page -1) * itemsInAPage;
int endPos = startPos - (itemsInAPage -1);
if (endPos < 0) {
endPos = 0;
}
// 페이지가 없을 때
if (startPos < 0) {
System.out.printf("%d페이지는 존재하지 않습니다.\n",page);
return;
}
for (int i = startPos; i >= endPos; i--) {
Article article = articleService.getArticleByIndex(i);
System.out.printf("%d /%s / %s\n", article.id, article.member.Id,article.title)
}
//--게시물 삭제----------------------------------------------------------------------
else if( command.startsWith("article delete")) {
System.out.println(" * 게시물 삭제 * ");
//로그아웃 상태일 경우
if (Container.session.isLogout()) {
System.out.println("로그인 후 이용해주세요");
return;
}
// 쪼개기
int inputedId = Integer.paraseInt(command.split(" ")[2]);
// 불러오기
Aticle article = articleService.getArticle(inputedId);
// 없는 게시물일 경우
if (article == null) {
System.out.printlf("%d번 게시물은 존재하지 않습니다.\n");
return;
}// 삭제하기
articleService.remove(intputedId);
System.out.printlf("%d번 게시물이 삭제되었습니다.\n",inputedId);
}
//--게시물 수정----------------------------------------------------------------------
else if (command.startsWith("article modify")) {
if (Container.session.isLogout()) {
System.out.println("로그인 후 사용하세요.");
return;
}
System.out.println(" * 게시물 수정 * ");
// 명령어 쪼개고 과거 게시글 정보 불러오기
int inputedId = Integer.paraseInt(command.split(" ")[2]);
Article article = articleService.getArticle(inputedId);
// 없는 게시글은 없다고 표시
if (article == null) {
System.out.printf("%d번 게시물은 존재하지 않습니다.\n",inputedId);
return;
}
// 수정 할 내용 고치기
System.out.printf("번호 : %d\n", article.id);
System.out.printf("제목 : ");
String title = sc.nextLine();
System.out.printf("내용 : ");
String body = sc.nextLine();
// 컨펌하기
articleService.modify(inputedId, title, body);
}
//--게시물 검색--------------------------------------------------------------------
else if( command.startsWith("article search")) {
String[] commandBits = command.split(" ");
String searchKeyword = commandBits[2];
int page = 1;
//리스트 번호를 얻기 위해
if (commandBits.length >= 4) {
page = Integer.paraseInt(commandBits[3]);
}
if (page <= 1) {
page = 1;
}
System.out.println("* 게시물 검색 *");
List<Article> searchResultArticles = new ArrayList<>();
for (Article article : aticlesService.getarticles()) {
if (article.title.contains(searchKeyword)) {
searchResultArticles.add(article);
}
}
if (searchResultArticles.size() == 0) {
System.out.println("검색결과가 존재하지 않습니다.");
return;
}
System.out.println("번호 / 제목");
int itemsInAPage = 10;
int startPos = searchResultArticles.size() -1;
startPos -= (page - 1) * itemsInAPage;
int endPos = startPos - (itemsInAPage - 1);
if (endPos < 0) {
endPos = 0;
}
if (startPos < 0) {
System.out.printf("%d페이지는 존재하지 않습니다.\n", page);
return;
}
for (int i = startPos; i >= endPos; i--) {
Article article = searchResultArticles.get(i);
System.out.printf("%d / %s\n", article.id, article.title);
}
}
}
}
*전체적인 일상은 노션을 통해 작성하고 있습니다.
'Java' 카테고리의 다른 글
#052 게시글관련 전체코드 작성(3차) (0) | 2020.12.11 |
---|---|
#051 게시글관련 전체코드 작성(2차) (0) | 2020.12.11 |
#048 데이터 구조 (간략) (0) | 2020.12.11 |
#047 Controller와 Service 개념 (간략) (0) | 2020.12.11 |
#046 회원가입 관련 코드 (0) | 2020.12.11 |