반응형

오랜만에 포스팅이다..

 

요즘 프로젝트 및 해외상황 및 기타 등등 잡무로 너무나 바쁜 하루를 보내고 있다.

주말에 매일 써야지 써야지 하면서 넘긴 하루들을 반성하며 

오늘은 꼭 써야지라고 하고 드디어 내 블로그를 켰다. 

 

저번에 만들었던 상세보기 모달까지 만들었으며

이번에는 삭제까지 만들려고 한다. 

 

우선 js를 작성해주고 ajax를 통하여 서버와 통신한다. 

 


Js 작성 

 

      $('#contentDiv').on('click', '.link-inner a', function(e) {
         e.preventDefault();
         
         const bno = $(this).attr('href');
         
         $.ajax({
            type: "post",
            url: "<c:url value='/snsBoard/delete' />",
            data: bno,
            contentType: 'application/json',
            success: function(result) {
               if(result === 'noAuth') {
                  alert('권한이 없습니다.');
               } else if(result === 'fail') {
                  alert('삭제에 실패했습니다. 관리자에게 문의하세요.');
               } else {
                  alert('게시물이 정상적으로 삭제되었습니다.');
                  getList(1, true); //삭제가 반영된 글 목록을 새롭게 보여줘야 하기 때문에 str을 초기화. 
               }
            },
            error: function() {
               alert('삭제에 실패했습니다. 다시 시도하세요.');
            }
         });
         
      });

 

이제 통신할 컨트롤러를 만들어 준다. 

 

	@PostMapping("/delete")
	@ResponseBody
	public String delete(@RequestBody int bno, HttpSession session) {
		System.out.println("삭제 글 번호 : " + bno);
		SnsBoardVO vo = service.getDetail(bno);
		UserVO user = (UserVO) session.getAttribute("login");
		
		//로그인을 하지 않았거나, 작성자와 현재 로그인한 id가 일치하지 않는다면
		if(user == null || !user.getUserId().equals(vo.getWriter()) ) {
			return "noAuth";
		}
		service.delete(bno);

 

 

우선 삭제할 글번호와 로그인한 세션의 정보를 가져온다. 

그 후 vo 객체에서 get으로 불러 준 뒤 

userVo의 세션 정보와 매핑시킨디ㅏ. 

그 후 조건문으로 로그인을 하지않은 경우 에러코드를 ajax쪽으로 보낸다,

 

그후 

		//파일 객체를 생성해서 지워지고 있는 게시물의 파일을 지목
		File file = new File(vo.getUploadpath()+"\\"+vo.getFilename());
		System.out.println("파일 삭제완료");
		return file.delete() ? "Success" : "fail"; // 파일 삭제 메소드

파일객체를 생성자로 불러와 지워 지고 있는 게시물의 파일을 지목한다., 

그후 리턴값으로 fail or success를 넣는다. 

 

그 뒤 Service문을 작성한다. 

 

게시물의 정보를 가져올 GetDetail() 과 

삭제를 담당하게 될 getDelete를  작성한다. 

 

		//파일 객체를 생성해서 지워지고 있는 게시물의 파일을 지목
		File file = new File(vo.getUploadpath()+"\\"+vo.getFilename());
		System.out.println("파일 삭제완료");
		return file.delete() ? "Success" : "fail"; // 파일 삭제 메소드
        
        	@Override
	public void delete(int bno) {
		mapper.delete(bno);

	}

 

mapper.xml을 작성한다. 

 

	<delete id="delete">
		delete from snsboard
		where bno = #{bno}
	</delete>
      //삭제 처리
      //삭제하기 링크를 클릭했을 때 이벤트를 발생 시켜서
      //비동기 방식으로 삭제를 진행해 주세요. (삭제 버튼은 한 화면에 여러개 겠죠?)
      //서버쪽에서 권한을 확인 해 주세요. (작성자와 로그인 중인 사용자의 id를 비교해서)
      //일치하지 않으면 문자열 "noAuth" 리턴, 성공하면 "Success" 리턴.
      // url: /snsBoard/delete, method: post

삭제처리를 총 종합해보면 위와 같다. 

 

 

그 후 작동 테스트를 해보면 

 

로그인 하지 않을 경우 권한없음 메시지 출력

삭제는.. 로그인 부분이 고장난거같다 추 후 확인을 해보아야 할거같다.

Otl...

반응형

+ Recent posts