DAY-80 Spring 풀이 비교, 파일 다운로드, 게시글 수정, 게시글 삭제
💻2022-06-27
❗ 수업을 듣고, 개인이 공부한 내용을 적은 것 이기에 오류가 많을 수도 있음
1️⃣ 풀이 방식
내가 푼 방식
- Controller에서 session의 값을 얻어 왔다.
- MultipartFile을 ArrayList로 받았다.
수업
write.jsp
- 게시글을 쓸 때 아이디와 닉네임을 controller로 보내는 방식으로 사용
- write.jsp 에서 controller로 보냄
DB
-- 이미지 저장 테이블
create table files(
seq_file number primary key,
seq_board number not null,
ori_name varchar2(500),
sys_name varchar2(1000),
constraints bf_key foreign key(seq_board) references board(seq_board)
);
BoardController
- MultipartFile을 ArrayList가 아닌 일반 배열로 받았다
🔔 크게 다른점
- 기본적으로 수업에서 사용한 방식은 db에 저장할 때 currval과 nextval을 사용하지 않았다. 대신 dao에서 select seq_board.nextval from dual; 를 통해 seq_board 값을 가져와 글 데이터를 넣을 때, 이미지 데이터를 넣을 때 사용하였다.
2️⃣ Date → String 변경
BoardDTO
BoardDAO
- 기존의 dao에서 해줬던 date→String으로 바꿔줬던 작업을 dto에서 생성자를 통해 해준다
- boardDAO에서 DB에서 Date 타입인 written_date를 그대로 dto로 넘겨준다
3️⃣ 파일 다운로드
detail.jsp
- 파일을 다운로드 할 수 있게 sys_name과 ori_name을 컨트롤러에 보내준다.
FileController
4️⃣ 게시글 삭제
detail.jsp
- 삭제 버튼을 눌렀을 때 동적인 form 생성 후 controller에 seq_board를 포함시켜서 보냄
BoardController
BoardDAO
BoardService
5️⃣ 게시글 수정
detail.jsp
요소 넣기
- 버튼의 value 값을 설정해준다. → loginSession과 현재 작성글의 id가 일치할 때만 보이게 한다
- 숨겨진 데이터 영역의 값들은 controller로 보내지기 위해 사용된다.
동작 순서
- 현재 세션의 아이디와 글 작성자의 아이디가 같다면 수정 버튼이 보인다.
- 수정 버튼을 누르면 첨부 파일 수정, 작성 글의 제목과 내용 변경이 가능하다
- 첨부 파일 수정 시 기존의 첨부 파일된 자료들을 자바스크립트를 활용해 배열에 넣어서 controller한테 보내준다(form 제출을 했을 때)
- 이때 오류 발생을 방지하기 위해 controller에서 @RequestParam(value=”deleteFileList[]”)을 이용한다. (input의 name도 deleteFileList[]이여야 한다)
BoardController.java
BoardService.java
동작 순서
- 첫 번째 작업은 새로운 파일이 들어왔을 때 서버와 데이터베이스에 각각 저장
- 수정된 글의 제목과 내용을 데이터베이스에 반영
- 삭제 요청된 파일이 있다면 서버와 실제 데이터베이스에서도 삭제
BoardDAO
- 파일 데이터를 제외하고 글 제목과 내용 수정
FileDAO
Leave a comment