💬
@PathVariable : 주소 값 가져오기 + request scope에 값 올리기
파라미터 : 제목, 내용, 파일(0~5개)
파일 저장 경로 : HttpSession
세션 : 로그인한 회원의 번호
리다이렉트 시 데이터 전달 : RedirectAttributes
작성 성공 시 이동할 게시판 코드 : @PathVariable("boardCode")
🔍 BoardController2
/* List<MultipartFile>
* - 업로드된 이미지가 없어도 List에 요소 MultipartFile 객체가 추가됨
*
* - 단, 업로드된 이미지가 없는 MultipartFile 객체는
* 파일크기(size)가 0 또는 파일명(getOriginalFileName())이 ""
* */
// 1. 로그인한 회원 번호를 얻어와 board에 세팅
board.setMemberNo(loginMember.getMemberNo());
// 2. boardCode도 board에 세팅
board.setBoardCode(boardCode);
// 3. 업로드된 이미지 서버에 실제로 저장되는 경로
// + 웹에서 요청 시 이미지를 볼 수 있는 경로(웹 접근 경로)
String webPath = "/resources/images/board/";
String filePath = session.getServletContext().getRealPath(webPath);
// 게시글 삽입 서비스 호출 후 삽입된 게시글 번호 반환 받기
int boardNo = service.boardInsert(board, images, webPath, filePath);
// 게시글 삽입 성공 시
// -> 방금 삽입한 게시글의 상세 조회 페이지 리다이렉트
// -> /board/{boardCode}/{boardNo}
String message = null;
String path = "redirect:";
if(boardNo > 0) { // 성공 시
message = "게시글이 등록 되었습니다.";
path += "/board/" + boardCode + "/" + boardNo;
}else { // 실패
message = "게시글 등록 실패 ㅠㅠ";
path += "insert";
}
ra.addFlashAttribute("message", message);
return path;
}
🔍 BoardServiceImpl2
// 게시글 삽입
@Transactional(rollbackFor=Exception.class)
@Override
public int boardInsert(Board board, List<MultipartFile> images, String webPath, String filePath) {
// 1. BOARD 테이블 INSERT 하기 (제목, 내용, 작성자, 게시판 코드)
// -> boardNo(시퀀스로 생성한 번호) 반환 받기
int boardNo = dao.boardInsert(board);
return boardNo;
}