반응형

# MVC07_12 업로드 한 파일 삭제하기

상세 보기 시 업로드 된 파일 삭제하기 작업

## memberList.jsp

<script type="text/javascript">
	function delFile(num, filename) {
		location.href="<c:url value='/fileDel.do'/>?num=" + num + "&filename=" + filename;
	}
</script>

<a href="javascript:delFile('${vo.num}', '${vo.filename}')"><span class="glyphicon glyphicon-remove"></span></a>

## HandlerMapping

package kr.bit.frontcontroller;

import java.util.HashMap;

import kr.bit.controller.Controller;
import kr.bit.controller.*;

public class HandlerMapping {
  private HashMap<String, Controller> mappings;
  public HandlerMapping() {
	  mappings=new HashMap<String, Controller>();
	  mappings.put("/memberList.do", new MemberListController());
	  mappings.put("/memberInsert.do", new MemberInsertController());
	  mappings.put("/memberRegister.do", new MemberRegisterController());
	  mappings.put("/memberContent.do", new MemberContentController());
	  mappings.put("/memberUpdate.do", new MemberUpdateController());
	  mappings.put("/memberDelete.do", new MemberDeleteController());
	  mappings.put("/memberLogin.do", new MemberLoginController());
	  mappings.put("/memberLogout.do", new MemberLogoutController());
	  mappings.put("/memberDbcheck.do", new MemberDbcheckController());
	  mappings.put("/memberAjaxList.do", new MemberAjaxListController());
	  mappings.put("/memberAjaxDelete.do", new MemberAjaxDeleteController());
	  mappings.put("/fileAdd.do", new FileAddController());
	  mappings.put("/fileGet.do", new FileGetController());
	  mappings.put("/fileDel.do", new FileDelController());
  }
  public Controller getController(String key) { // key=>/memberList.do
	  return mappings.get(key);
  }
}

## FileDelController 생성

  • 프로젝트 > src > kr.bit.controller 우 클릭 > class > FileDelController 이름으로 생성
package kr.bit.controller;

import java.io.File;
import java.io.IOException;
import java.net.URLEncoder;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import kr.bit.model.MemberDAO;

public class FileDelController implements Controller {

	@Override
	public String requestHandler(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		
		String ctx = request.getContextPath();
		
		String filename = request.getParameter("filename");
		int num = Integer.parseInt(request.getParameter("num"));
		filename = URLEncoder.encode(filename, "UTF-8");
		filename = filename.replace("+", " ");
		
		String UPLOAD_DIR = "file_repo";
		String uploadPath = request.getServletContext().getRealPath("") + File.separator + UPLOAD_DIR;
		File file = new File(uploadPath + "\\" + filename);
		
		// 디렉터리에서 파일 삭제.
		if (file.exists()) {
			file.delete();
			System.err.println("디렉터리에서 파일 삭제.");
		}
		
		// 테이블에서 파일 삭제(null 처리_update)
		MemberDAO dao = new MemberDAO();
		int cnt = dao.memberDeleteFile(num);
				
		return "redirect:" + ctx + "/memberContent.do?num=" + num;
	}

}

## MemmberDAO

// 테이블에서 파일 삭제(null 처리_update)
public int memberDeleteFile(int num) {
  SqlSession session = sqlSessionFactory.openSession();
  int cnt = session.update("memberDeleteFile", num);
  session.commit();	// DB 내용이 수정되므로 commit을 해줘야 한다.
  session.close();	// 연결 종료(반납)
  return cnt;
}

## MemberMapper

<!-- 테이블에서 파일 삭제(null 처리_update) -->
<update id="memberDeleteFile" parameterType="Integer">
  UPDATE member1 
  SET filename = ''
  WHERE num = #{num}
</update>  

 

# MVC07_13 업로드 한 파일 수정하기

첨부파일이 존재하는 경우, 첨부파일이 없는 경우 2가지 경우 존재.

## memberList.jsp 수정

## memberUpdateController 수정

package kr.bit.controller;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import kr.bit.model.MemberDAO;
import kr.bit.model.MemberVO;

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;
	}
}

## MemberDAO

// 회원 수정하기(파일정보 포함)
public int memberUpdateFile(MemberVO vo) {
  SqlSession session = sqlSessionFactory.openSession();
  int cnt = session.update("memberUpdateFile", vo);
  session.commit();	// DB 내용이 수정되므로 commit을 해줘야 한다.
  session.close();	// 연결 종료(반납)
  return cnt;
}

## MembmerMapper

<!-- 회원 정보 수정(파일정보 포함) -->
<update id="memberUpdateFile" parameterType="memberVO">
  UPDATE member1 
  SET age = #{age}, email = #{email}, phone = #{phone}, filename = #{filename} where num = #{num}
</update>

 

# MVC07_14 정리

1. 회원 리스트_초기 진입 화면 : http://localhost:8081/MVC07/memberList.do 

  • 해당화면에서 회원 리스트 확인 가능.
  • 로그인 시 본인 정보 삭제 가능.
  • 회원가입 시 or 회원 정보 수정 시 첨부한 이미지 파일 존재할 경우 이미지 표시 가능.
  • 하단 회원 리스트 클릭 시 ajax로 리스트 출력.

2. 회원가입

  • 아이디 입력 후 중복체크 클릭 시 아이디 중복여부 확인 가능.
  • 파일 선택 클릭하여 첨부파일 등록 가능.

3. 회원 상세보기

  • 본인 회원정보 상세보기 시 상단에 이미지 표시
  • 본인 정보는 본인만 수정가능
  • 첨부파일 첨부 or 수정 or 다운로드 가능

4. 작업한 파일

MVC07.war
3.14MB

반응형

+ Recent posts