반응형
오랜만에 포스팅이다..
요즘 프로젝트 및 해외상황 및 기타 등등 잡무로 너무나 바쁜 하루를 보내고 있다.
주말에 매일 써야지 써야지 하면서 넘긴 하루들을 반성하며
오늘은 꼭 써야지라고 하고 드디어 내 블로그를 켰다.
저번에 만들었던 상세보기 모달까지 만들었으며
이번에는 삭제까지 만들려고 한다.
우선 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...
반응형
'Spring > 학원에서 배운거정리 끄적' 카테고리의 다른 글
(Spring /Java) SNS 스타일 게시판 만들기(4)😁 (0) | 2022.02.27 |
---|---|
(Spring /Java) SNS 스타일 게시판 만들기(3)😁 (0) | 2022.02.24 |
(Spring /Java) SNS 스타일 게시판 만들기(2)😁 (0) | 2022.02.22 |
(Spring /Java) SNS 스타일 게시판 만들기(1)😁 (0) | 2022.02.21 |
(Spring /Java) 스프링 파일 업로드 구현 (2) | 2022.02.20 |