언어/JAVA

Servlet-JSP MVC07 파일 수정하기

now0204 2023. 7. 24. 21:23

 

- 파일 수정하기 

- 파일 수정하기도 회원 가입시 첨부파일을 지정하는 것과 마찬가지로

- 파일 업로드하고 정보 수정 vs 파일 업로드 없이 정보 수정 

- 파일 업로드하고 회원 정보 수정시 

   1. ajax로 먼저 파일을 업로드 시키고, 업로드 된 filename 콜백함수로 받아서 

   2. hidden타입 id= filename에 value를 return받은 filename으로 바꿔 둔 뒤에 

   3. 수정하기 누르면, 같이 넘어가도록 한다.

 

1. 뷰 쪽 수정 

 

<input type="hidden" name="filename" value="" id="filename"/>
function update(){
		
 if($("#file").val() != ''){ 
 var formData = new FormData();
formData.append("file",$("input[name=file]")[0].files[0]);
 $.ajax({
   url : "<c:url value='/fileAdd.do'/>", 
   type : "post",
   data : formData,
   processData : false,
   contentType : false,
   success : function(data){ 
   			
   	$("#filename").val(data); 
   		document.form1.action="<c:url value='/memberUpdate.do'/>?mode=fUpdate"; 
   		 document.form1.submit();
   				
   	},
   	error : function(){alert("error");}
 });
   	 }else{ 
   		 	document.form1.action="<c:url value='/memberUpdate.do'/>?mode=Update"; 
   	    	document.form1.submit();
   	 }
   }

 

2. Update Controller 수정

 

public class MemberUpdateController implements Controller{

	@Override
	public String requestHandler(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		
		String ctx=request.getContextPath();
		
		int num=Integer.parseInt(request.getParameter("num"));
		int age=Integer.parseInt(request.getParameter("age"));
		String email=request.getParameter("email");
		String phone=request.getParameter("phone");
		
		MemberVO vo=new MemberVO();
		if(request.getParameter("mode").equals("fUpdate")) {
			String filename = request.getParameter("filename");
			vo.setFilename(filename);
		}
		vo.setNum(num);
		vo.setAge(age);
		vo.setEmail(email);
		vo.setPhone(phone);
		
		MemberDAO dao=new MemberDAO();
		int cnt = -1;
		if(request.getParameter("mode").equals("fUpdate")) {
			cnt=dao.memberUpdateFile(vo);
		}else {
			cnt=dao.memberUpdate(vo);
		}
		
	
		String nextPage=null;
		if(cnt>0) {
		    	// 수정성공		        
			nextPage="redirect:"+ctx+"/memberList.do";
		 }else {
		    	// 가입실패-> 예외객체를 만들어서  WAS에게 던지자.
		    	throw new ServletException("not update");	    	
		 }		
		return nextPage;
	}
}

* 넘어온 mode에 따라 VO셋팅과 update쿼리를 다르게 발생시킨다.

 

3. DAO메서드 추가 

 

public int memberUpdateFile(MemberVO vo) {
	SqlSession session = sqlSessionFactory.openSession();
	int cnt = session.update("memberUpdateFile",vo);
	session.commit();
	session.close();
	
	return 0;
}

 

참고자료: 나프2탄(박매일) -인프런

https://www.inflearn.com/course/%EB%82%98%ED%94%84-mvc-2

 

[NarP Series] MVC 프레임워크는 내 손에 [나프2탄] - 인프런 | 강의

본 과정은 WEB MVC 프레임워크가 무엇이고 WEB MVC 프레임워크가 어떻게 변형이 되면서 Spring WEB MVC 프레임워크로 넘어가는지 TPC(생각하고-표현하고-코딩하고) 기법을 통해 단계적으로 학습하고 이

www.inflearn.com