■ 파일 삭제 및 업데이트.
1. UploadMultiAction.java
//삭제
public String delete() throws Exception{
dto = new UploadDTO();
BeanUtils.copyProperties(dto, bean);
if(dto.getFileSize() > 0){
new File(UploadUtil.SAVE + dto.getFileName()).delete(); //파일 저장위치, 이름만 불러와서 delete를 하면 바로 삭제 된다.
}
new UploadDAO().delete(dto); //DB 내용 삭제
return SUCCESS;
}
//업데이트
public String update() throws Exception{
dto = new UploadDTO();
BeanUtils.copyProperties(dto, bean);
if(this.isState()){
new File(UploadUtil.SAVE + dto.getFileName()).delete();
//파일만 삭제 됐을 경우나 파일이 업데이트 됐을경우 파일을 삭제 시켜주고 파일 이름과 사이즈만 초기화 시켜준다.
dto.setFileName("");
dto.setFileSize(0L);
}
if(bean.getFile() != null){ //파일이 업데이트 됐을 경우 다시 업로드 시켜준다.
upload();
}
new UploadDAO().update(dto); //DB를 업데이트 시켜준다.
return SUCCESS;
}
2. modify.jsp
view 작업이 더 힘든것 같다.-_-;;
체크 박스를 클릭하지 않으면 파일은 변경없이 다른 내용만 변경된다.
체크 박스를 체크하고 업데이트를 할 경우, 새로운 파일을 추가하지 않으면 파일은 삭제된 상태로 업데이트가 되고, 새로운 파일을 올리면 파일이 변경되서 업데이트 된다.
주의 할 점은 name 에 bean.name 과 value 에 dto.name 처럼 써줘야 데이터가 제대로 맵핑된다. 그리고 업데이트 action 부분에 enctype="multipart/form-data" 이 부분을 꼭 써줘야 파일이 업로드 된다.
<%@ page contentType="text/html;charset=euc-kr"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<s:bean id="bean" name="com.myhome.upload.beans.UploadFormBean"/>
<html>
<head>
<title>struts2::upload</title>
<script type="text/javascript">
function delProc(){
if(!confirm('개인정보와 파일을 삭제하시겠습니까?')){
return;
}
//document.modifyform.method.value="delete";
//document.modifyform.action="delete.action";
//document.modifyform.submit();
document.delform.submit();
}
function fileCheck(){
var v = document.modifyform;
if(v.state == null)return;
var doc = document.getElementById("fileState");
var fileChk = document.getElementById("fchk");
fileForm = "<br/> <input type='file' name='bean.file'>";
if(v.state.value == 'false'){
v.state.value='true';
fileChk.innerHTML='파일삭제 또는 변경';
doc.innerHTML = fileForm;
}else if(v.state.value == 'true'){
v.state.value='false';
fileChk.innerHTML='파일유지';
doc.innerHTML = '';
}
}
</script>
<style type="text/css">
td {font-size: 10pt;}
</style>
</head>
<body>
<center><br><br>
<h3><b>Struts2 Upload_Download(modify,delete)</b></h3>
<form method="post" name="delform" action="delete.action">
<input type="hidden" name="bean.num" value="${dto.num }">
<input type="hidden" name="bean.fileName" value="${dto.fileName }">
<input type="hidden" name="bean.fileSize" value="${dto.fileSize }">
</form>
<form method="post" name="modifyform" enctype="multipart/form-data" action="update.action">
<!-- <input type="hidden" name="method" value="update">-->
<input type="hidden" name="bean.num" value="${dto.num}">
<input type="hidden" name="bean.fileName" value="${dto.fileName}">
<input type="hidden" name="bean.fileSize" value="${dto.fileSize }">
<table border=0 cellpadding=0 cellspacing=1 bgcolor="#000000">
<tr height=30 bgcolor="#ffffff">
<td width=100 align="right"><b>번호</b> </td>
<td width=300 align="left"> ${dto.num}</td>
</tr>
<tr height=30 bgcolor="#ffffff">
<td width=100 align="right"><b>이름</b> </td>
<td width=300 align="left">
<input type="text" name="bean.name" value="${dto.name}">
</td>
</tr>
<tr height=30 bgcolor="#ffffff">
<td width=100 align="right"><b>성별</b> </td>
<td width=300 align="left">
<input type="radio" name="bean.sex" value="남" <c:if test="${dto.sex == '남'}">checked</c:if>>남
<input type="radio" name="bean.sex" value="여" <c:if test="${dto.sex == '여'}">checked</c:if>>여
</td>
</tr>
<tr height=30 bgcolor="#ffffff">
<td width=100 align="right"><b>연락처</b> </td>
<td width=300 align="left">
<input type="text" name="bean.tel" value="${dto.tel}">
</td>
</tr>
<tr height=30 bgcolor="#ffffff">
<td width=100 align="right"><b>등록일자</b> </td>
<td width=300 align="left"> ${dto.wdate}</td>
</tr>
<tr height=30 bgcolor="#ffffff">
<td width=100 align="right"><b>첨부파일</b> </td>
<td width=300 align="left">
<c:if test="${dto.fileSize > 0}">
${dto.fileName}
<span style="font-size:10pt; color:#90a087">
(<fmt:formatNumber value="${dto.fileSize}" type="number"/>bytes)
</span>
<input type="checkbox" name="state" value="false" onclick="javascript:fileCheck()">
<span id="fchk" style="font-size:9pt;color:#908756"></span>
</c:if>
<span id="fileState"></span>
<c:if test="${dto.fileSize < 1}"><!-- 파일이 없는 경우 -->
<input type="file" name="bean.file">
</c:if>
</td>
</tr>
<tr height=30 bgcolor="#ffffff">
<td align="left" colspan=2>
<span style="font-size:9pt; color:red">
<s:fielderror />
</span>
</td>
</tr>
<tr height=30 bgcolor="#f0f0f0">
<td align="center" colspan=2>
<input type="submit" value="갱신...">
<input type="button" value="삭제..." onclick="delProc()">
<input type="button" value="등록하기"
onclick="javascript:location.href='index.action'">
<input type="button" value="리스트"
onclick="javascript:location.href='list.action'">
</td>
</tr>
</table>
</form>
</center>
</body>
</html>
자세한 내용은 파일 참조
이 파일은 이전 까지 한 모든 작업이 포함된 파일이다. (이 파일은 학습 용입니다.)
struts2 삭제, 업데이트 끝!
'FrameWork > Struts2' 카테고리의 다른 글
Struts2에서 Action에 있는 데이타로 JSP에서 보여주기. (0) | 2009.07.09 |
---|---|
Struts2 Interceptor(인터셉터) 2. (0) | 2009.07.09 |
Struts2에서 freemarker-2.3.8.jar와 ognl-2.6.11.jar 에 대한 내용. (0) | 2009.07.08 |
Struts2에서 Tiles Plugin 사용하기. (1) | 2009.07.08 |
Struts2 Interceptors(인터셉터) 1. (0) | 2009.07.07 |
Struts2 에서 upload & download 하기 2. (0) | 2009.07.07 |
Struts2 에서 upload & download 하기 1. (0) | 2009.07.06 |
Struts2 에서 session 처리하는 방법(로그인, 로그아웃 해보기). (0) | 2009.07.05 |
Struts2 에서 validator 사용하기. (0) | 2009.07.05 |
Struts2 Annotation type을 이용한 Action mapping (0) | 2009.07.05 |