파일업로드
- Content-Type: application/x-www-form-urlencoded
- Content-Type: multipart/form-data; boundary=----WebKitFormBoundarykxajvNY1e43i6ccC!
- 바디를 여러개로 쪼개야한다 -> multipart
- 몇개로 쪼개?= form의 input 갯수 -> form-data
multi-part config
<multipart-config>
<location></location>
<max-file-size></max-file-size>
<max-request-size></max-request-size>
<file-size-threshold></file-size-threshold>
<multipart-config>
- chunck: 하나의 데이터를 네트워크에 맞게 쪼개는 단위
첫번째 코드가 망한 코드인 이유
- 사용자가 나쁜맘 먹고 백도어프로그램(.exe, .jsp)을 업로드한다면?
- 클사: 필요한 데이터만 받도록 확장자 특정..
<input type="file" name="uploadFile" accept="image/*"/>
- 서버: contentType 확인
- 원본파일명으로저장하지마 -> 해커가 뭘로업로드했는지 지도모름,,
- 확장자 없애고저장 -> 실행이 바로안됨
필터
- A filter is an object that performs filtering tasks on either therequest to a resource (a servlet or static content), or on the responsefrom a resource, or both.
- Decorate Filter Pattern
- 기존 코드 변경하지 않고 filter 적용 완료!
Filter Chain
- 필터 구현
- was에 필터 등록
- was가 등록된 필터를 필터 체인으로 관리
- 필터체인은 filter의 doPost의l reference로 들어와있음
목적
- 요청 전처리로 요청 성격 변경
- 보안 목적의 접근제어
- 응답 후처리 완성
- 응답 데이터가 1GB -> 필터에서 압축하여 내보냄
기능
- Authentication Filters
- Logging and Auditing Filters
- Image conversion Filters
- Data compression Filters
- Encryption Filters
- Tokenizing Filters
- Filters that trigger resource access events
- XSL/T filters
- Mime-type chain Filter
필터 체인이 없다면..?
front controller, backend controller 내의 코드가 변경되어야 함
command object
순서
- DB구조 바뀜 -> DOMAIN LAYER -> 쿼리문 바뀜 -> view단(memberForm.jsp) 바뀜 (클라이언트용 mem_image, form을 post 와 enctype!
이진데이터를 이미지로 -> data scheme
- base64로 인코딩시주의점
- base64로 인코딩하면 1.3배 커짐
- 이미지 사이즈에 맞지 않으면 크롭기능을 넣어준다던지..해줘야됨..
미션
- 브레이크포인트 찍어가며 흐름파악
- 멤버 수정
- 거래처에 거래처 이미지 기능부여
- 이미지 사이즈 체크하여 썸네일?