Spring - 게시판 구현(게시글 작성)

Hyunny ·2023년 8월 28일
0

SPRING

목록 보기
12/14
post-thumbnail

🤍📝 게시글 작성

💬
@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;
	}


profile
개발 learning ... 📝

0개의 댓글