list 페이지에서 수정 버튼을 클릭하면
get방식으로 update.do가 실행
MediaCont.java
@RequestMapping(value = "/media/update.do", method = RequestMethod.GET)
public ModelAndView updateForm(int mediano) {
ModelAndView mav = new ModelAndView();
mav.setViewName("media/updateForm");
MediaDTO dto = dao.read(mediano);
mav.addObject("dto", dto);
return mav;
}//updateForm() end
get방식으로 update.do가 실행되면 updateForm 실행
수정하려는 글 번호에 대한 정보를 가져와 dto에 담고 mav에 추가하고 updateForm.jsp로 이동
updateForm.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>updateForm.jsp</title>
<style>
*{font-family: gulim; font-size: 24px;}
</style>
<link href="../css/style.css" rel="stylesheet" type="text/css">
</head>
<body>
<div class="title">음원 수정</div>
<form name="frm" method="post" action="update.do" enctype="multipart/form-data">
<input type="hidden" name="mediagroupno" value="${dto.mediagroupno}"> <!-- 부모글번호 -->
<input type="hidden" name="mediano" value="${dto.mediano}"> <!-- 부모글번호 -->
<table class='table'>
<tr>
<th>제목</th>
<td><input type='text' name='title' size='50' value="${dto.title}"></td>
</tr>
<tr>
<th>포스터</th>
<td>
<img src="../storage/${dto.poster}">
<input type='file' name='posterMF' size='50'>
</td>
</tr>
<tr>
<th>미디어 파일</th>
<td>
등록된 파일명 : ${dto.filename}<br>
<input type='file' name='filenameMF' size='50'>
</td>
</tr>
</table>
<div class="bottom">
<input type="submit" value="음원수정">
<input type="button" value="음원목록" onclick="location.href='list.do?mediagroupno=${dto.mediagroupno}'">
<input type="button" value="HOME" onclick="location.href='/home.do'"><!-- 절대경로 -->
</div>
</form>
</body>
</html>
음원 수정을 클릭하면 post방식으로 update.do 실행
MediaCont.java
post방식으로 update.do가 실행되면 updateProc 실행
@RequestMapping(value = "/media/update.do", method = RequestMethod.POST)
public ModelAndView updateProc(@ModelAttribute MediaDTO dto, HttpServletRequest req) {
ModelAndView mav = new ModelAndView();
mav.setViewName("media/msgView");
String basePath = req.getRealPath("/storage");
MediaDTO oldDTO = dao.read(dto.getMediano()); //기존에 저장된 정보를 가져오기
////////////////////////////////////////////////////////
//파일을 수정할 것인지?
//1)
MultipartFile posterMF = dto.getPosterMF();
if(posterMF.getSize()>0) { //새로운 포스터 파일이 첨부되어 전송되었는지?
UploadSaveManager.deleteFile(basePath, oldDTO.getPoster()); //기존에 저장되어 있는 파일 삭제
String poster = UploadSaveManager.saveFileSpring30(posterMF, basePath); //신규로 전송된 파일 저장
dto.setPoster(poster);
} else {
dto.setPoster(oldDTO.getPoster()); //기존에 저장된 파일명
}//if end
//2)
MultipartFile filenameMF = dto.getFilenameMF();
if(filenameMF.getSize()>0) { //새로운 포스터 파일이 첨부되어 전송되었는지?
UploadSaveManager.deleteFile(basePath, oldDTO.getFilename()); //기존에 저장되어 있는 파일 삭제
String filename = UploadSaveManager.saveFileSpring30(filenameMF, basePath); //신규로 전송된 파일 저장
dto.setFilename(filename);
dto.setFilesize(filenameMF.getSize());
} else {
dto.setFilename(oldDTO.getFilename()); //기존에 저장된 파일명
dto.setFilesize(oldDTO.getFilesize());
}//if end
///////////////////////////////////////////////////////
int cnt = dao.update(dto);
if(cnt==0) {
String msg1 = "<p>음원 수정 실패!!</p>";
String img = "<img src='../images/crying.png'>";
String link1= "<input type='button' value='다시시도' onclick='javascript:history.back()'>";
String link2= "<input type='button' value='목록으로' onclick='location.href=\"list.do?mediagroupno=" + oldDTO.getMediagroupno() + "\"'>";
mav.addObject("msg1", msg1);
mav.addObject("img", img);
mav.addObject("link1", link1);
mav.addObject("link2", link2);
} else {
String msg1 = "<p>음원 수정 성공</p>";
String img = "<img src='../images/smile.png'>";
String link2= "<input type='button' value='목록으로' onclick='location.href=\"list.do?mediagroupno=" + oldDTO.getMediagroupno() + "\"'>";
mav.addObject("msg1", msg1);
mav.addObject("img", img);
mav.addObject("link2", link2);
}//if end
return mav;
}//updateProc() end
MediaDAO.java
public int update(MediaDTO dto) {
int cnt = 0;
try {
sql = new StringBuilder();
sql.append(" UPDATE media ");
sql.append(" SET title=?, poster=?, filename=? ,filesize=? ");
sql.append(" WHERE mediano=? ");
cnt = jt.update(sql.toString(), dto.getTitle(), dto.getPoster(), dto.getFilename(), dto.getFilesize(), dto.getMediano());
} catch (Exception e) {
System.out.println("수정 실패 : " + e);
}//end
return cnt;
}//update() end
'웹개발 교육 > Spring' 카테고리의 다른 글
[73일] Spring (14) Ajax - 서버에서 응답 받기 (0) | 2022.11.09 |
---|---|
[71일] spring (13) - mymelon 호스팅 (0) | 2022.11.07 |
[70일] spring (11) - mymelon media 삭제 (0) | 2022.11.04 |
[70일] spring (10) - mymelon media 상세보기 (0) | 2022.11.04 |
[70일] spring (9) - mymelon media 등록 (0) | 2022.11.04 |