본문 바로가기
JSP & Servlet/Maven Project

Message System 3-1.게시판 작성 및 파일 업로드 / enctype ( post방식으로 파일 전송 ) / MultipartRequest (파일 업로드를 받아오기 위한 객체) / JDBC에 시퀸스 인자값 /

by leehii 2022. 6. 30.

<dependencies> </dependencies> 사이에  cos.jar 라이브러리를넣어주기

 

------------------------------------------------------------------

 

 

--BoardWrite.jsp--

 

 

<form action="전송할곳" method = "post" enctype="multipart/form-data">

 

enctype은 post방식만 가능함

multipart = 이미지든 뭐든 모든 형식의 파일을 전송한다는 뜻

 

 

---------------------------------------------------------------------------------------------------------------

 

 

--WriteBoardService.java (Servlet) --

 

 

1.

 

파일업로드를 받아오기 위해 먼저 업로드 파일이 저장될 장소를 설정해야함

src < main < webapp 안에 파일을 업로드받을 폴더를 만들어줘야함

 

 

2.  

 

 

 

MultipartRequest (파일 업로드를 받아오기 위한 객체) 생성 필요

 

MultipartRequest 객체명 = new MultipartRequest ();

자동완성을 할경우 받아와야 할 값이 여러개가 뜨는데 그중

 

 이 5개의 값을 가진것을 불러온다

 

 

 

 

 Servlet 에서 경로값을 가져오려면 getServletContext()로 정보를 가져온후 getRealPath() 로 경로를 가져와야함

 

5개의 값은 각각 

 

request : MultipartRequest와 연결되는 request
saveDirectory : 업로드해서 서버에 저장할 경로
maxsize : 파일 최대크기 (5mb -> 1024*1024*5)
encoding : 파일명에 대한 인코딩 방식
FileRenamePolicy : 업로드파일 이름이 중복되지않도록 번호표 만들어줌 -> 객체생성 필요
 이므로

 

객체 multi 위에 해당 값들을 지정해줘야 한다

 

 

request 는 연결되는 거니까 지정할 필요없고

 

saveDirectory 에는 경로를 지정해줘야하는데 이 경로는  위에서 만들어준

 

 

이 경로이다.

 

이 경로값을 불러오는 getRealPath 인데

이 함수를 사용하기 위해서는 Servlet의 환경정보를 가져오는 getServletContext()를 먼저 실행해야 한다.

 

 

 

 

이렇게 경로를 불러온후 ("file" 은 위에서 지정한 폴더의 이름)

 

파일크키와 인코딩을 지정,

 

최종적으로 

 

 

FileRenamePolicy에  new DefaultFileRenamePolicy()라는 기본값을 지정해준다

 

 

 

이후

 

 

jsp에서 보낸 4개의 값을 받아온다

 

다음 파트는

 

 

DB와 연결하는 파트이므로 

 

밑에서 Model파트인 BoardDTO와 BoardDAO를 확인한 후 다시 설명하겠음

 

------------------------------------------------------------------------------------------

 

 

--sql--

 

DB와 연동해야 하므로 일단 sql문을 작성해준다

 

 

-----------------------------------------------------------

 

 

 

--BoardDAO.java(모델부분)--

 

num, title, write, filename, b_date의 5개의 값을 가져올껀데

num은 시퀸스이므로 ?가 아닌 nextval로 

b_date는 날짜를 표시하므로 ?가 아닌 sysdate로 표시한다

 

 

 

--------------------------------------------------------------------

 

 

--BoardDTO.java--

 

모든 값을 필드에 선언하고

시킌스인 nu과 date를 제외한 4개의 값을 생성자메소드로 만들고

setter and gettrer을 생성해준다

 

 

 

 

C:\Users\smhrd\Desktop\수업자료\jsp\jsp_servlet\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\maven_MessageSystem_board\file

 

 

정상적으로 업로드된 모습과

 

같은 이름의 파일에 번호가 지정된 모습도 확인됨