

-> 파일 첨부시 : servlet단에서는 library 도움 받음
-> servlet단은 내장되어있음









action에다가 servlet경로 적기
post 메소드 필수 ->없으면 파일첨부 x

httpservletrequest (x)(지금까지는)
-> 바꿔서
-> multipart/form servlet request






-> doPOST로 호출해도
어차피 doGET으로 모인다







multipart/form-data : 파일(<input type="file">)이 포함된 폼을 전송할 때 사용
-> "multipart/form-data"는 파일 업로드가 없는 폼에도 사용할 수 있다. 다만, "multipart/form-data"는 파일 전송을 위해 추가적으로 표시되는 요소들이 있기 때문에 "application/x-www-form-unlcencoded"보다 기본 데이터가 더 커지기 때문에 짧은 데이터 전송에는 비효율적이다.
-> 파일 전송(input type="file")이 없으면 "application/x-www-form-urlcencoded" 또는 "enctype"을 미표기하는 것이 가장 효율적인 방법이다.
링크텍스트


-> storage 다 지우기

-> 1024 => 2의 10승
-> kbyte -> megabyte -> gigabyte

파일명은 library가 바꿈 -> 동일한 이름만 안나오면 됨

-> c드라이브 밑에 stroage 첨부파일이 복사되었음



리눅스는 경로가 하나임(C드라이브X D드라이브 X)



-> attach이렇게 하면 안됨




-> 파일이름에 encoding처리도 해야함
(파일이름에 한글 그대로 올리면 encoding깨짐)
-> 아예 저장할때는 이름을 바꿔서 올림






태그 만들때 : 만들고 싶은 태그만 만들기!






(서버 공간에 있는것을 사용자들에게 다운로드 시켜준다)

다운로드를 수행할 경로를 만들기


다운로드 서블릿 만들기

-> 응답을 우리가 만들어서 하는것

-> 다운로드 파라미터 name임
-> 인코딩 먼저 하기


다운로드 하기위한 링크를 모두 만들어놓은 상태







-> 파라미터 이름 : path로 바꾸기



다운로드한 읽어들일 파일은 만듦
Disposition : 기질, 성향, 배치, 배열 뜻
-> HTTP Response Header에 들어가는 Content-Disposition은 HTTP Response Body에 오는 컨텐츠의 기질/성향을 알려주는 속성이다.
-> defaul값은 inline으로 web에 전달되는 data라고 생각하면 됨





str.substring(2); -> llo 반환
str.substring(5); -> index + 1 값을 starIndex로 지정하면, 빈 문자열을 리턴한다.
str.substring(-1);
str.substring(6);
-> 음수값이나 범위를 벗어나는 값을 입력하면 StringIndexOutOfBoundException 발생함


기본값 : 크롬의 다운로드 폴더에 알아서 저장됨
(ex) cos library 도 다운로드 받을 때 그냥 받아진것처럼
읽어서 byte배열에 보관하는 코드

(1) searchValue : 탐색할 문자열, 빈값인 경우 fromIndex(+Infinity) 반환
let str = 'hello world';
str.lastIndex('1'); //9 -> 문자열 전체를 기준으로 탐색하여 우측에서 첫번째로 존재하는 l의 index는 9이므로 9를 반환한다
str.lastIndex('L'); // -1 -> 대문자 L은 문자열에 존재하지 않으므로 -1을 반환한다.
str.lastIndex('a'); // -1 -> a는 문자열에 존재하지 않으므로 -1을 반환한다.
(2) fromIndex(optional)
let str = 'hello world';
str.lastIndexOf('l',2); //2 -> fromIndex가 2이므로 index2(hel)역순으로 탐색한다.
str.lastIndexOf('l',3); //3 -> fromIndex가 3인 경우 문자열 'hell'에서 l을 탐색하여 index3을 반환한다.
str.lastIndexOf('l',10); //9 -> fromIndex가 10인 경우 문자열 'hello world'에서 l을 탐색하여 index9을 반환한다.
(3) 배열의 경우 배열 index를 반환
let arr = ['apple', 'banana', 'orange', 'banana'];
arr.lastIndexOf('banana',2); //2
링크텍스트







-> 나중에는 COPY하는 메소드 있음

-> 목록을 보려면 계속 첨부해야하는 단점이 있음

내용은 안깨짐 -> 이름만 의도치 x



1장의 upload down 끝
2장 jsp 들어감
(html안에 java코드 넣을 수 있음 -> servlet안만들고 jsp하나가지고 다 만들 수 있음)
-> 필요하면 java코드 끼워넣음
<순서>
servlet -> jsp(중급) -> MVC 패턴 -> Oracle 가지고 MVC패턴에 맞춰서 CRUD 들어감
spring framwork(고급) -> MVC패턴과 CRUD 반복 연습함










-> 50mega는 안넘고 이미지가 아닌것 첨부하기

-> 확인 누르면 첨부 취소됨





-> img태그 만들고 src속성 넣은것



-> html로 바꿔서 덮어쓰기


-> 단일첨부만 헀음
(다중첨부는 Spring에서 하기)
