fboardList.jsp : 리스트 page
<a href="fboardWrite.do"><button type="button">글쓰기</button></a>
fboardWrite.do로 보냄
Fcontroller - fboardWrite.do :
case "fboardWrite.do": //글쓰기 페이지
url="fboardWrite.jsp";
break;
fboardWrite.jsp
form tag: action="doFboardWrite.do" method="post"에
btitle/id/content/file를 doFboardWrite.do로 보낸다.
<script>
/*제목 글자수 check하고 */
function fboardBtn(){
if($("#btitle").val().length<2){
alert("제목을 두글자 이상 입력하셔야 합니다.")
$("#btitle").focus();
return
}
/* */
if(confirm("글쓰기를 저장하시겠습니까??")){
return fboardFrm.submit();
}
}//
function cancelBtn(){
if(confirm("글쓰기를 취소하시겠습니까?"))location.href="fboardList.do";
}//
</script>
<form action="doFboardWrite.do" method="post" name="fboardFrm" enctype="multipart/form-data">
<!--파일첨부할때 사용 -->
<tr>
<th>제목</th>
<td><input type="text" name="btitle" id="btitle"></td>
</tr>
<tr>
<th>작성자</th>
<td><input type="text" name="id" id="id" value="aaa" readonly></td>
</tr>
<tr id="content">
<th>내용</th>
<td>
<textarea rows="20" cols="80" name="bcontent" id="bcontent"></textarea>
</td>
</tr>
<tr>
<th>첨부파일</th>
<td><input type="file" name="bfile" id="bfile"></td>
</tr>
</table>
<div>
<button type="button" onclick="fboardBtn()">글쓰기</button>
<button type="button" onclick="cancelBtn()" >취소</button>
</div>
Bcontroller - doFboardWrite.do :
case "doFboardWrite.do": //글쓰기 저장
bservice=new BServiceBoardInsert();
bservice.execute(request,response);
url="doFboard.jsp";
break;
✔ BServiceBoardInsert()
btitle/id/content/file을 받아 온 것을
MultipartRequest multi = new MultipartRequest(request, uploadPath, size, "utf-8",
new DefaultFileRenamePolicy());
multi에 넣어서 저장한다.
Enumeration files = multi.getFileNames();
저장된 파일 이름을 다 가져온다.
저장된 파일이 없어도/ null로 값이 들어가진 않는다.
따라서 아래 if(hasMoreElements())도 돌긴 돈다.
다만 if 속
bfile=multi.getFilesystemName(fileName); 값은
null이 뜬다.
저장된 파일이 있다면, if문을 돌면서
bfile=multi.getFilesystemName(fileName);
저장했을 때 파일 이름이 저장하는 폴더에 중복으로
있을 경우 변형된 이름으로 자동 저장이 되는데,
그 이름을 bfile에 넣어준다.
BoardDao bdao = new BoardDao();
String id, btitle, bcontent, bfile = "", fileName = "";
int result = 0;
String uploadPath = "C:/upload";
int size = 10*1024*1024;
try {
MultipartRequest multi = new MultipartRequest(request, uploadPath, size, "utf-8",
new DefaultFileRenamePolicy()); // uploadPath에 저장한다.
id = multi.getParameter("id");
btitle = multi.getParameter("btitle");
bcontent = multi.getParameter("bcontent");
// 파일 이름 가져오기
int i = 0;
Enumeration files = multi.getFileNames(); // 파일 이름 몽땅 다 가져오기(upload하는거)
if(files.hasMoreElements()) {
fileName=(String)files.nextElement();
bfile=multi.getFilesystemName(fileName); }
result=bdao.boardInsert(new BoardBean(id,btitle,bcontent,bfile));
if(result==1) request.setAttribute("result", "s-w");
else request.setAttribute("result", "f-w");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}}
✔boardInsert(new BoardBean(id,btitle,bcontent,bfile)
query="insert into freeboard values(freeboard_seq.nextval,?,?,?,sysdate,1,1,freeboard_seq.currval,0,?)";
pstmt=conn.prepareStatement(query);
pstmt.setString(1, boardBean.getId());
pstmt.setString(2, boardBean.getBtitle());
pstmt.setString(3, boardBean.getBcontent());
pstmt.setString(4, boardBean.getBfile());
result=pstmt.executeUpdate();
return result;
doFboard.jsp :Bcontroller가 잘 수행되었는지 check
<c:when test="${result=='s-w'}">
<script>
alert("게시글이 저장되었습니다.");
location.href="fboardList.do";
</script>
</c:when>
<c:when test="${result=='f-w'}">
<script>
alert("시스템 오류로 게시글 저장이 되지 않았습니다.");
location.href="fboardWrite.do";
</script>
</c:when>
