일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Oracle DB
- 모조칼럼
- HTTP Status 404
- github
- Java
- JavaScript
- HTML
- tomcat
- 이클립스
- CRUD
- jQuery
- 답변형 게시판
- group by
- 한글 인코딩
- sql developer
- ||
- JSP
- Oracle SQL
- HTTP Status 500
- 부트스트랩
- alias
- git
- distinct
- 과정평가형
- 제약조건
- Bootstrap
- 성적프로그램
- oracle
- rownum
- SQL
Archives
초급의 끄적거림
[Spring] 파일 업로드 게시판 본문
1. 파일 업로드/다운로드 게시판
1-1) Spring Legacy Project - mymelon
- kr.co.mymelon으로 mymelon 프로젝트 생성
- pom.xml → oracle 라이브러리, 파일 업로드/다운로드 라이브러리 추가
- web.xml → 한글 인코딩
- servlet-context.xml → <resources mapping ~~> 대신<default-servlet-handler> 추가
→ beans 태그의 prefix = "/" 로 변경
- webapp 에 css, images, js, media, sql 폴더 생성
- DB를 붙여야하기 때문에 DBPKG 복사 붙여넣기
1-2) sql문 생성
★ 잊지 말고 commit;
CREATE TABLE media ( mediano NUMBER NOT NULL PRIMARY KEY, -- 미디어 번호 title VARCHAR2(255) NOT NULL, -- 제목 poster VARCHAR2(255) DEFAULT 'poster.jpg' NOT NULL, -- 포스터 이미지 filename VARCHAR2(255) NOT NULL, -- 음원 파일명 filesize NUMBER DEFAULT 0 NOT NULL, mview CHAR(1) DEFAULT 'Y' NOT NULL, -- 출력모드 rdate DATE NOT NULL -- 등록일 ); |
HomeController.java
- mymelon/src/main/java/kr.co.mymelon.HomeController.java
- 객체 생성 확인
- redirect 뷰
: 뷰 이름에 "redirect: 접두어 " 가 붙으면 지정한 페이지로 리다이렉트 된다.
방식)
1. redirect : /bbs/list - 현재 서블릿 컨텍스트에 대한 상대적인 경로로 리다이렉트
2. redirect : http://host/bbs/list - 지정한 절대 URL로 리다이렉트
package kr.co.mymelon;
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class HomeController {
public HomeController() {
System.out.println("-----HomeController() 객체 생성 됨");
}//HomeController() end
//mymelon 프로젝트 첫 페이지 호출 명령어 등록
//http://localhost:8090/mymelon/home.do
@RequestMapping(value = "/", method = RequestMethod.GET)
public ModelAndView home(){
ModelAndView mav=new ModelAndView();
//redirect → 등록된 명령어를 호출한다
mav.setViewName("redirect:/media/list.do");
return mav;
}//home() end
}//class end
MediaDTO.java
- mymelon/src/main/java/kr.co.mymelon.media.MediaDTO.java
- dto에 담아서 사용하기 위해서 MediaDTO에 postMF, filenameMF 추가
- getter, setter 추가
package kr.co.mymelon.media;
import org.springframework.web.multipart.MultipartFile;
public class MediaDTO {
private int mediano;
private String title;
private String poster;
private String filename;
private long filesize;
private int mview;
private String rdate;
//-------------------------------------------------------------------------------------------------------------
//스프링 파일 객체 멤버변수
//매개변수 dto를 받기 위해서는 동일한 이름이 필드 DTO에 있어야하고 getter, setter가 필요함
//createForm.jsp 의 포스터 : <input type='file' name='postMF'> → 동일한 name이 필요하기 때문에 postMF 그대로 사용
private MultipartFile posterMF;
//createForm.jsp 의 미디어파일 : <input type='file' name='filenameMF'>
private MultipartFile filenameMF;
//-------------------------------------------------------------------------------------------------------------
public int getMediano() {
return mediano;
}
public void setMediano(int mediano) {
this.mediano = mediano;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getPoster() {
return poster;
}
public void setPoster(String poster) {
this.poster = poster;
}
public String getFilename() {
return filename;
}
public void setFilename(String filename) {
this.filename = filename;
}
public long getFilesize() {
return filesize;
}
public void setFilesize(long filesize) {
this.filesize = filesize;
}
public int getMview() {
return mview;
}
public void setMview(int mview) {
this.mview = mview;
}
public String getRdate() {
return rdate;
}
public void setRdate(String rdate) {
this.rdate = rdate;
}
public MultipartFile getPosterMF() {
return posterMF;
}
public void setPosterMF(MultipartFile posterMF) {
this.posterMF = posterMF;
}
public MultipartFile getFilenameMF() {
return filenameMF;
}
public void setFilenameMF(MultipartFile filenameMF) {
this.filenameMF = filenameMF;
}
}//class end
servlet-context.xml
- 파일 전송이 있는 경우 스프링빈 등록
CommonsMultipartResolver → 전송된 파일을 읽어서 MultipartFile 객체로 변환
- <resources mapping ~~> 대신 <default-servlet-handler> 추가
beans 태그의 prefix = "/" 로 변경
MediaCont.java
- mymelon/src/main/java/kr.co.mymelon.media.MediaCont.java
- get 방식, post 방식으로 진행
- 순서
1) pom.xml → 파일 업로드 / 다운로드 관련 의존성 추가
2) MediaDTO → postMF, filenameMF 필드 추가후 getter,와 setter 함수 생성
3) servlet-context.xml 에 스프링빈 등록
package kr.co.mymelon.media;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
public class MediaCont {
public MediaCont() {
System.out.println("----- MediaCont() 객체 생성 됨");
}
// get 방식
@RequestMapping(value = "/media/create.do", method = RequestMethod.GET)
public String createForm() {
return "media/createForm";
}// craeteForm() end
// post 방식
@RequestMapping(value = "/media/create.do", method = RequestMethod.POST)
public ModelAndView createForm(MediaDTO dto, HttpServletRequest req) {
//매개변수를 dto로 받기 위해서 필요 조건 : 동일한 name이 DTO에 있는가, 그것의 getter와 setter가 있는가
ModelAndView mav = new ModelAndView();
mav.setViewName("media/msgView");
return mav;
}//createForm() end
}// class end
'Framework > Spring' 카테고리의 다른 글
[Spring] 파일 다운로드/업로드 (수정, 삭제) (0) | 2019.10.20 |
---|---|
[Spring] 파일 다운로드/업로드 게시판 (등록, 목록, 상세보기) (0) | 2019.10.18 |
[Spring] AJAX 2 / 아이디 중복확인 / 쿠키 생성 (0) | 2019.10.17 |
[Spring] maven / AJAX (0) | 2019.10.16 |
[Spring] Spring 기본설정 / 기본 사용 방법 (0) | 2019.10.15 |
Comments