자유게시판-글쓰기

easyliving·2023년 1월 31일

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>

		

profile
가끔져요

0개의 댓글