첨부파일 게시판 관련 설정
- web.xml에 url 추가
- attm-context.xml에 추가 (뷰만 분리 controller는 board와 같이 사용)
파일 데이터 controller
- view에서 controller로 데이터를 보낼 시 form태그 안에 enctype="multipart/form-data"가 있어야 인코딩된 상태로 controller단으로 데이터가 넘어온다!

root-context.xml에 파일업로드 관련 객체 등록

라이브러리 commons io와 commons fileupload 등록(pom.xml)

여러개의 파일을 받을 시 ArrayLsit'<'MultipartFile'>'로

save메소드 생성시 맥os와 윈도우os 경로

public String[] saveFile(MultipartFile file, HttpServletRequest request) {
String root=request.getSession().getServletContext().getRealPath("resources");
//WEB-INF안에 있는 resources(정적파일관리)를 도달하려고 하는 경로
//윈도우 경로
//String savePath=root+"\\uploadFiles";
//맥os경로 접근 방법
String savePath=root+"/uploadFiles";
File folder = new File(savePath);
if(!folder.exists()) {
folder.mkdirs();//폴더가 없으면 폴더를 만들어줘!!
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyMMddHHmmssSSS");
//날짜이용하기 위해 simpleDateFormat이용할 거임!!
int ranNum=(int)(Math.random()*100000);
String originFileName=file.getOriginalFilename();
String renameFileName=sdf.format(new Date(System.currentTimeMillis()))+ranNum+originFileName.substring(originFileName.lastIndexOf("."));
// 이름을 다시 지어 ㄴ데이터 업로드된 날짜 및 시간 + ㄴ랜덤값 + 원본파일에서 가장 마지막 . 뒤에 추츨(파일확장자명 추츨)
// 변경된 이름을 파일안에 저장한다!!
String renamePath=folder+"/"+renameFileName;
try {
file.transferTo(new File(renamePath));
} catch (Exception e) {
System.out.println("파일 전송 에러: "+e.getMessage());
}
String[] returnArr= new String[2];
returnArr[0]=savePath;
returnArr[1]=renameFileName;
return returnArr;
}
파일생성시 내가 원하는 경로가 아닌 컴퓨터가 퍼블리싱 해준 곳으로 파일이 생성됨!

- 퍼블리싱하지 않겠다 클릭
- 그러면 maven 안에 있는 jstl라이브러리가 먹통이 될것이다.
- 그러면 WEB-INF안에 lib만들어 주고 dev에 있는 라이브러리 4개 추가해주면 됨!
무결성 제약 조건
- 사진 여러장을 insert all로 여러개를 데이터로 집어 넣을 예정
- pk가 insert all에서는 sequence가 nextval이 먹지 않는다.
- pl/sql시간때 배웠던 sql function기능 이용

