글작성 다이어그램.drawio.png

글작성 다이어그램.drawio

myHomeForm.jsp

     // 글 저장
    function boardWrite() {
        if ($("#title").val() == "") {
            alert("제목을 입력하세요");
            return false;
        }

        if ($('#summernote').summernote('isEmpty')) {
            alert("내용을 입력하세요");
            return false;
        }

        // FormData 객체 생성
        // 해당 폼안에 있는 데이터들을 담기
        var formData = new FormData($("#articleForm")[0]);

        $.ajax({
            type: "POST",
            enctype: 'multipart/form-data',
            processData: false,
            contentType: false,
            url: "/gami/board/board_myhome/insertBoard.do",
            data: formData,
            dataType: "text", // 변경
            success: function(response) {
                    if (response === "success") {
                        alert("게시글이 성공적으로 작성되었습니다.");
                        // 게시글 목록으로 리다이렉트
                        window.location.href = "/gami/board/board_myhome/myHomeList.do";
                    } else {
                        alert("게시글 작성 중 오류가 발생하였습니다.");
                    }
            }
        });
    }

필터링 기능 추가 (3.21 이민주)

 <div class="filtering">
	        	주거형태    <select name="housingType" id="housingType">
	          <option value="" disabled selected hidden>--- 주거형태를 선택하세요 ---</option>
	          <option value="원룸">원룸</option>
	          <option value="아파트">아파트</option>
	          <option value="단독주택">단독주택</option>
	          <option value="사무공간">사무공간</option>
	          <option value="상업공간">상업공간</option>
	        </select>
	          	평수    <select name="homeSize" id="homeSize">
	          <option value="" disabled selected hidden>--- 평수를 선택하세요 ---</option>	
	          <option value="9평 미만">9평 미만</option>
	          <option value="10평대">10평대</option>
	          <option value="20평대">20평대</option>
	          <option value="30평대">30평대</option>
	          <option value="40평 이상">40평 이상</option>
	        </select>
	      </div>	

Controller

@ResponseBody
	@RequestMapping(value="/insertBoard.do", method=RequestMethod.POST)
	public String insertBoard(HttpSession session, 
														@RequestParam("title") String title, 
														@RequestParam("content") String content,
														@RequestParam("housingType") String housingType,
														@RequestParam("homeSize") String homeSize) throws Exception{
		
		// 세션에서 아이디 가져오기
		MemberDomain memberDomain = (MemberDomain) session.getAttribute("member");
		myhomeDomain.setMemberId(memberDomain.getMemberId());
		System.out.println(memberDomain.getMemberId());
		
		// 새글 번호 가져오기
		int newArticle = myhomeService.selectNewMyHomeNO();
		System.out.println("새글 번호 : " + newArticle);
		myhomeDomain.setBoardMyhomeArticleNo(newArticle);
		
		// 파람으로 받은 제목과 내용 가져오기
		myhomeDomain.setBoardMyhomeTitle(title);
		myhomeDomain.setBoardMyhomeContents(content);
		myhomeDomain.setBoardMyhomeHousingType(housingType);
		myhomeDomain.setBoardMyhomeHomeSize(homeSize);
		
	    boolean check = myhomeService.addArticleMyHome(myhomeDomain);
	    
	    // 폴더에 존재하지 않은 파일 삭제
	    int boardMyhomeArticleNo = newArticle;
        myhomeDomain = myhomeService.selectMyHome(boardMyhomeArticleNo); // 게시글 조회
        
        String fileRoot = "C:\\\\gami\\\\board\\\\board_myhome\\\\" + boardMyhomeArticleNo + "\\\\"; // 외부 경로
				String coFileRoot = "C:\\\\gami\\\\board\\\\board_myhome\\\\coverImage\\\\" + boardMyhomeArticleNo + "\\\\";
        
        // 위 경로로 파일 객체 생성
        File saveFileDir = new File(fileRoot);
        File saveFileDir2 = new File(coFileRoot);
        
        // 글내용 파일 삭제 
        // 파일 목록들을 배열에 담음.
        String[] saveFileList = saveFileDir.list();
        
        // for문을 돌려서 작성된 글 내용에 파일이 포함되었나 확인
        for(String saveFileName: saveFileList) {
        	System.out.println(saveFileName);
            boolean Check = myhomeDomain.getBoardMyhomeContents().contains(saveFileName);
            System.out.println("사진 포함 여부 : " + Check);
            // 만약 글내용에 포함되어 있지 않다면 해당 파일 삭제.
            if(myhomeDomain.getBoardMyhomeContents().contains(saveFileName)==false) {
            	fileRoot = "C:\\\\gami\\\\board\\\\board_myhome\\\\" + newArticle + "\\\\" + saveFileName;
            	saveFileDir = new File(fileRoot);
            	FileUtils.deleteQuietly(saveFileDir);
            }
        }
   //커버이미지 삭제
   String coverImage = myhomeService.**getCoverImageName**(boardMyhomeArticleNo); // 파일이름 가져오기

		if (coverImage != null && !coverImage.isEmpty()) {
		    // 폴더가 존재하는지 확인
		    if (saveFileDir2.exists() && saveFileDir2.isDirectory()) {
		        // 폴더 내 모든 파일 리스트 가져오기
		        File[] fileList = saveFileDir2.listFiles();
		
		        if (fileList != null) {
		            for (File file : fileList) {
		                // 커버 이미지가 아닌 파일이면 삭제
		                if (!file.getName().equals(coverImage)) {
		                    boolean deleted = file.delete();
		                    System.out.println("파일 삭제됨: " + file.getName() + ":" + deleted);
		                }
		            }
		        }
		    }
		}
        
        
	    if(check == true){ return "success"; }
	    else{ return "fail"; }
	}

Service

@Override
	public boolean addArticleMyHome(MyhomeDomain myhomeDomain) throws Exception{
		
		try {
			myhomeDAO.addArticleMyHome(myhomeDomain);
			return true;	
		}catch(Exception e){
			e.printStackTrace();
			System.out.println("게시글 DB저장 중 오류 발생");
			return false;	
		}
	}

DAO

@Override
	public void addArticleMyHome(MyhomeDomain myhomeDomain) throws DataAccessException {
		sqlSession.insert("mapper.board.addArticleMyHome", myhomeDomain);
	}