반응형
# 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. 작업한 파일
반응형