

사용자에게 이름과 이메일 주소를 요청한다.
→ 데이터베이스에 있는지 확인한다.
→ (이메일 제약조건에 중복되지않게 되어있다)
→ 일치하면 임시비밀번호를 만든다. (테이블수정 UPDATE)
→ 상대방 메일에게 보내준다.
→ 임시비밀번호로 로그인을 하고
→ 회원정보수정에서 원하는 비밀번호로 바꿔서 쓸 수 있도록 만들어준다.








if문 사이에 임시 비밀번호 발급

- 대문자, 소문자, 숫자이용해서 랜덤하게 10글자 만들기






아이디 비밀번호 찾기 결과 페이지

- 폼에 입력한 이름과 이메일 값을 가져오고 dto객체에 담아준다.


컨텐츠 타입으로는 여러가지가 있다
① application/x-www-form-urlencoded
② text/plain
③ multipart/form-data
등이 있다.
따라서 POST 방식으로 데이터를 보낼때는 위와 같이 컨텐츠 타입을 꼭 명시해줘야한다.
보통 작성하지 않는 경우는 1번의 컨텐츠 타입으로 셋팅된다.
①의 컨텐츠 타입은, GET방식과 마찬가지로 BODY에 key 와 value 쌍으로 데이터를 넣는다. 똑같이 구분자 &를 쓴다.
②의 컨텐츠 타입은, BODY에 단순 txt를 넣는다.
③의 컨텐츠 타입은, 파일전송을 할때 많이 쓰는데 BODY의 데이터를 바이너리 데이터로 넣는다는걸 알려준다.
자바와 같이 oop 프로그래밍에서는 BODY에 데이터를 InputStream/OutputStream 클래스를 통해서 읽고/쓰고 한다.
java SE, javaEE
cos.jar 안에있는 클래스를 이용해서 파일을 쉽게 전송할 수 있다.
→ 파일이 깨지지 않도록 원상복구해주는 기능이 들어있다.


I:\java202207\setup\cos-22.05\lib\cos.jar


- storage는 파일을 저장하기위한 폴더








- 마지막 파일첨부 부분에 파일명이 전송된다.
- 파일이 전송된 것이 아니다.
class MultipartRequest : 파일 저장

- 똑같은 파일이 존재하면 중복을 제거해준다.
class FileRenamePolicy : 중복된 이름을 내가 지정한 다른이름으로 저장

class DefaultFileRenamePolicy : 중복된 이름을 정해진 다른 이름으로 저장해준다. (1,2,3)


- 이 파일을 storage 폴더에 저장할 것이다.
- 파일을 데이터베이스에 저장시키면 안된다. (DB용량 감당못함)
- DB에는 업로드된 파일명과 확장명, 파일크기 정도만 저장을 시키고, 실제파일은 웹서버의 하드디스크에 저장을 시킨다.
→ 데이터베이스에 저장된 파일명과 다른 폴더에 저장된 파일명끼리 일치를 시키면 된다.
commons-fileupload-1.3.1-bin.zip
▷ 그냥 가장 최신버전으로 다운받기(1.4)


---> Download
commons-io-2.4-bin.zip
▷ 그냥 가장 최신버전으로 다운받기 (2.11)




결과확인

- 이클립스에서 서버를 돌리고 있기 때문에 나오는 경로고 실제론 존재하지 않는다.
경로 확인해서 폴더 열어놓기
I:\java202207\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\myweb\storage
→ 맥북에선 .metadata폴더가 보이지 않는데, command+shift+. 눌러주면 숨김폴더가 노출된다.

http://www.servlets.com/cos/javadoc/com/oreilly/servlet/MultipartRequest.html

MultipartRequest

- request: 원본 파일 가져와라
- s
- FileRenamePolicy policy에는 중복된 파일명이 있으면 지정된 이름으로 변경해주는 class DefaultFileRenamePolicy를 넣어주면 된다.


- com.oreilly.servlet 을 선택할 것
변수 생성 후 MultipartRequest 객체 사용하기

- 이대로 넣어주면 된다.
pdsTest.jsp에서 폼을 입력한 후 전송을 누르면 storage폴더에 파일이 생성된다.

뭐지이거


- MultipartRequest를 담은 mr변수로 가져와야한다 그렇지 않으면 null값이 나온다.

파일명, 파일 정보, 파일 용량은 어느정도인지 ?
mr변수에서 꺼내오면 된다.

<input type="file">을 전부 수거
- 이부분을 수거하는 것이다.


nextElement()


↳ 여기서 가져와야 한다




