웹개발 교육/Spring

[70일] spring (12) - mymelon media 수정

2022. 11. 4. 17:32

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
'웹개발 교육/Spring' 카테고리의 다른 글
  • [73일] Spring (14) Ajax - 서버에서 응답 받기
  • [71일] spring (13) - mymelon 호스팅
  • [70일] spring (11) - mymelon media 삭제
  • [70일] spring (10) - mymelon media 상세보기
ewok
ewok
ewok
기록장
ewok
전체
오늘
어제
  • 분류 전체보기
    • 웹개발 교육
      • HTML
      • CSS
      • JavaScript
      • Database
      • Java
      • jQuery
      • Ajax
      • Bootstrap
      • jsp
      • Spring
      • MyBatis
      • 프로젝트
    • JAVA
    • SpringBoot
      • 기초
      • AWS
      • 개인프로젝트
    • Spring Security
    • JPA
    • 테스트코드
    • Error
    • CS
      • 컴퓨터 구조
      • 이산수학
    • 알고리즘
      • 정리
      • Java
    • SQL
    • 자격증
      • SQLD
      • 정보처리기사
    • Git

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • org.hibernate.tool.schema.spi.CommandAcceptanceException
  • 버전 관리
  • 생성자
  • this
  • merge commit
  • branch
  • 브랜치
  • org.springframework.beans.factory.UnsatisfiedDependencyException
  • sqld 합격
  • git bash
  • 노랭이
  • sqld 자격증
  • base
  • SQLD
  • GIT

최근 댓글

최근 글

hELLO · Designed By 정상우.
ewok
[70일] spring (12) - mymelon media 수정
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.