● 소프트웨어 디자인 설계 패턴
▶ MVC
1. M(Model)
- DB에서 조회된 결과 값을 담기 위한 변수들이 선언된 클래스
- 클래스명 뒤에 VO, DTO라는 문자를 붙여준다.
- VO(Value Object)
- DTO(Data Transfer Object)
2. V(View)
- 사용자에게 보여질 화면을 구성하는 부분
- Controller에 선언된 메소드를 사용하는 부분
3. C(Controller)
- DB에 접근할 수 있는 메소드들이 선언된 클래스
- 접근 후 결과 값이 있을 경우 Model 객체에 담은 후 처리
- 클래스명 뒤에 DAO라는 문자를 붙여준다.
- DAO(Data Access Object)
실습(파일 입출력)
- 문제
// food.txt 파일을 현재 경로에 생성하고,
// 파일 내용은 족발, 보쌈, 짜장면, 탕수육 네 가지 음식으로 작성한다.
// 각 음식은 줄바꿈 후 다음 음식을 넣도록 한다.
// 반복문을 사용해서 데이터를 출력한다.
// 작성한 내용을 콘솔에 출력한다.
1. food.txt 파일 생성 및 내용 작성
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class FileTask {
public static void main(String[] args) throws IOException{
String[] food = {"족발", "보쌈", "짜장면", "탕수육"};
BufferedWriter bw = new BufferedWriter(new FileWriter("food.txt"));
for (int i = 0; i < food.length; i++) {
bw.write(food[i] + "\n");
}
bw.close();
}
}

2. 작성한 내용 콘솔에 출력
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class FileTask {
public static void main(String[] args) throws IOException{
......
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader("food.txt"));
String line = null;
while((line = br.readLine()) != null) {
System.out.println(line);
}
br.close();
} catch (Exception e) {
System.out.println("해당 경로에 파일이 없습니다.");
}
}
}

※ food.txt file 삭제
File f = new File("food.txt");
if(f.exists()) {
f.delete();
}
실습(파일 입출력)
- 문제
// fish.txt 파일을 현재 경로에 생성하고,
// 파일 내용은 도미, 고등어, 갈치, 광어 네 가지 생선으로 작성한다.
// 각 음식은 줄바꿈 후 다음 음식을 넣도록 한다.
// 반복문을 사용해서 데이터 출력/수정/삭제를 진행한다.
1. fish.txt 파일 생성 및 내용 작성
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class FileTask2 {
public static void main(String[] args) throws IOException{
String[] fish = {"도미", "고등어", "갈치", "광어"};
BufferedWriter bw = new BufferedWriter(new FileWriter("fish.txt"));
for (int i = 0; i < fish.length; i++) {
bw.write(fish[i] + "\n");
}
bw.close();
}
}

2. 데이터 수정(고등어 -> 놀래미)
- 위의 코드의 main() 메소드에 이어서 작성
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class FileTask2 {
public static void main(String[] args) throws IOException{
......
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader("fish.txt"));
String line = null;
String temp = ""; // 아래 코드에서 연결하기 때문에 ""로 초기화
while((line = br.readLine()) != null) {
if(line.equals("고등어")) {
temp += "놀래미\n";
continue;
}
temp += line + "\n";
}
// try {
// a(수정하기)
// b(덮어쓰기)
// }
// try문에 있는 a작업에 오류가 발생하면, b작업은 실행되지 않는다.
// a가 문제 없이 진행되어야 b를 실행할 수 있다면 위와 같이 로직을 작성한다.
// 고등어 검색 후 수정 부분에서 문제가 생긴다면, 기존 파일을 temp로 덮어쓰면 안되기 때문에
// try문 안에서 temp로 덮어씌워 준다.
// 덮어쓰기
// 덮어쓰기하면 수정한 내용이 출력된다.
BufferedWriter bw = new BufferedWriter(new FileWriter("fish.txt"));
bw.write(temp);
bw.close();
} catch (FileNotFoundException e) {
System.out.println("경로를 찾을 수 없습니다.");
} finally { // 오류 발생에 상관 없이 무조건 실행된다.
if(br != null) {
br.close(); // 열린 장치나 열린 파일을 닫을 때 사용한다.
}
}
}
}

3. 데이터 삭제(갈치 삭제)
- 위의 코드의 main() 메소드에 이어서 작성
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class FileTask2 {
public static void main(String[] args) throws IOException{
......
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader("fish.txt"));
String line = null;
String temp = ""; // 아래 코드에서 연결하기 때문에 ""로 초기화
while((line = br.readLine()) != null) {
if(line.equals("갈치")) {
continue;
}
temp += line + "\n";
}
BufferedWriter bw = new BufferedWriter(new FileWriter("fish.txt"));
bw.write(temp);
bw.close();
} catch (FileNotFoundException e) {
System.out.println("경로를 찾을 수 없습니다.");
} finally {
if(br != null) {
br.close(); // 열린 장치나 열린 파일을 닫을 때 사용한다.
}
}
}
}

'웹 개발 > Java' 카테고리의 다른 글
[Web_JAVA] 43 (0) | 2022.03.29 |
---|---|
[Web_JAVA] 42 (0) | 2022.03.28 |
[Web_JAVA] 40 (0) | 2022.03.26 |
[Web_JAVA] 39 (0) | 2022.03.25 |
[Web_JAVA] 38 (0) | 2022.03.24 |