[Spring] STS / file upload 파일 올리기 _ 2. delete
2021. 3. 4. 14:41ㆍWeb_Back-end/Spring
2021/03/04 - [Web_Back-end/Spring] - [Spring] STS / lombok 사용
2021/03/04 - [Web_Back-end/Spring] - [Spring] STS / file upload 파일 올리기 _ 1. select
1번 게시물에 이어서, goods테이블의 상품을 삭제(delete)하는 코드를 작성해본다
a태그로 상품 수정, 삭제 페이지로 이동하는 코드 추가
--> 쿼리스트링으로 상품번호를 보낸다
detailGoods.jap
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h2>상품상세</h2>
상품번호 : ${g.no }<br>
상품이름 : ${g.name }<br>
상품수량 : ${g.qty }<br>
상품가격 : ${g.price }<br>
<img src="img/${g.fname }">
<hr>
<a href="updateGoods.do?n=${g.no }">상품수정</a>
<a href="deleteGoods.do?n=${g.no }">상품삭제</a>
</body>
</html>
DELETE
Controller에 method추가 + 파일을 삭제하는 일
- deleteGoods.do 를 요청하면, 일어나는 일을 정의한다
- 파일이 있는 실 경로를 아는 곳은 컨트롤러이기 때문에 파일을 삭제하는 일을 컨트롤러에서 처리한다
GoodsController.java 에 추가
/**
* @param no DB의 데이터를 삭제하기 위한 기준
* @param request 파일을 삭제하기 위해 사용하는 객체
* @return
*/
@RequestMapping("/deleteGoods.do")
public ModelAndView delete(int no, HttpServletRequest request) {
ModelAndView mav = new ModelAndView();
// 파일의 실 경로를 담는다
String path = request.getRealPath("/img");
// dao 가 레코드를 삭제하면 파일명을 알 수 없다
// 따라서, 해당 레코드를 삭제하기 전에 파일명을 미리 알아둔다 _ 파일삭제를 위해
// vo를 반환해주는 selectGoods(해당상품번호)를 사용한다
String oldFname = dao.selectGoods(no).getFname();
// dao에서 삭제할 method 이름 = deleteGoods(int no)
int re = dao.deleteGoods(no);
if(re == 1) {// 삭제에 성공한 경우
// 파일 객체를 생성하여, 파일 지우기
File file = new File(path + "/" + oldFname);
file.delete();
// _ 상품목록 요청
mav.setViewName("redirect:/listGoods.do");
}else {
mav.addObject("msg", "상품삭제에 실패하였습니다");
mav.setViewName("error");
}
return mav;
}
dao에 컨트롤러에서 불러온 method를 만든다
GoodsDao.java 에 deleteGoods(int no) 추가
public int deleteGoods(int no) {
// TODO Auto-generated method stub
return DBManager.deleteGoods(no);
}
DBManager에 method추가
DBManager.java 에 deleteGoods(int no) 추가 _ xml에 추가할 deleteGoods 를 호출
public static int deleteGoods(int no) {
// TODO Auto-generated method stub
SqlSession session = factory.openSession();
int re = session.delete("goods.deleteGoods", no);
// commit
session.commit();
session.close();
return 0;
}
GoodsMapper.xml 에 id 가 deleteGoods 인 노드 추가
여기까지의 과정을 거꾸로 해도 된다
server가동하여 test해보기
'Web_Back-end > Spring' 카테고리의 다른 글
[Spring] STS / file upload 파일 올리기 _ 3. update (0) | 2021.03.04 |
---|---|
[Spring] STS / file upload 파일 올리기 _ 1. select (0) | 2021.03.04 |
[Spring] STS / lombok 사용 (0) | 2021.03.04 |
[Spring] 스프링부트 & mybatis 환경에서 DB연결 연습 2 (0) | 2021.03.03 |
[Spring] spring boot 기초_ DB와 연동하기 (0) | 2021.03.03 |