-
?
클라이언트가 서버쪽으로 보내려는데이터 : parameter, multipart 형태 두가지를 띔
parameter를 먼저 살펴보자...
---------------------------------------
input의 type...
name은 parameter의 이름.
radio와 checkbox의 차이는 multiselecting 가능여부
서버사이드방식 , 클라이언트 사이드 방식이 어떻게 결정되는지?
contextPath...
- contextpath를 따로 가지는 property는 없어서 생략불가.
클라이언트가 입력한 데이터가 어떤 방식으로 전송되는지 보자.
여기가 리퀘스트 라인... 지금은 말하자면 편지봉투는 있는데, 편지지는 없음.
데이터를 편지봉투에 다 써야 하는 상태임.
==> URL에 다 적힘...
? 뒤를...??라고 함 ??? query spin?????string? -- querystring인듯...
&& 엔퍼센트로 나눠진 걸 하나의 sector라고 함.
get방식에서 문제는?
1) 편지봉투에 죄다 적어놨으니, --보안에 취약하다
2) 편지봉투에 기록할 수 있는 데이터의 크기가 제한됨.
3) 모든 데이터를 문자열로밖에 못 보냄
post방식으로 바꾸면, body가 만들어짐 ==> 편지지가 생기는 것과 같음
쿼리스트링이 없음 --> 이제는 content-length, type이 생김
양식데이터에서 소스보기(view source)가 있는데 눌러보면 비슷한 방식으로 보낸다는거죠.. parameter라는 개념으로 통일해서 가져온다는거죠..... getParameter라는 걸 쓸 때, post인지 get인지 신경쓰지 않고 사용할 수 있게 되는...
POST방식의 장점
1) 주소창에 일단 안보임 - 보안을 한번 해 줌
2) 보내는 데이터의 사이즈가 제한이 안생김
3) 보내는 데이터의 형태에 제한이 없음. 여러 형태의 데이터를 섞어서 보낼 수 있음.
4) https (secure) --> 데이터를 보호해주는건데, body가 구성이 되어서 메세지가 post형태로 간다고 하면, 다 암호화 됨. 그걸 중간에 의도하지 않은 사용자가 가로채더라도 읽을 수 없는 상태가 됨.
** 공공분야 : get 메서드를 사용하지 마라 ==> 보안이 취약함
a태그 클릭...기본적으로 get방식임. 그런데 post방식...으로 넘기는 것도 필요함...
과제???
??ㅋㅋㅋㅋㅋㅋㅋㅋ??????
* 클라이언트가 입력하는 데이터에는 한글이 있을 수도 있어요,...
model1방식으로 하다가 model2방식으로 바꿀거예요...
collection view...실제 collection은 아니고 view역할..접근만 하는...
list, set은 element라고 하는데
map은 entry라고 함...
여기서 입력하는건 UTF-8 방식으로 보내진다고 함.. req.setCharacterEncoding("UTF-8");
뭐지... 이거...body...만 처리한댔는데 작동을 안하는거...doGet방식으로 처리하면...
request Line으로 가서 body가 없는데 어떻게 처리가 되는가..
tomcat8버전부터는.... 특수문자 처리가 되게 되어 있음....
그 이하버전에서는 안됨....
tomcat7로 돌려보겠음..
한글을 입력하면 깨짐... 이놈이 제일 먼저 받아옴... 인코딩 처리를 해줌... 그럼 안깨짐.... 그런데 URIEncoding="UTF-8" 이거를 입력을 해 놓으면... 다른 characterset을 쓰고 있으면 안됨...
등등의 에러...
그래서 이런 식으로 사용하는 방법이 있음..
useBodyEncodingForURI="true"
이렇게 바꾸고 다시 실행해봄... 깨짐...일단 이게 정상이라함.... 얘를 넣어주니까 안깨짐. 왜지? 설명 못들음 post로 바꿔줌... 여전히 잘 작동함...
이제 그러면 한글이 깨지면 이런식으로 처리를 해 주면 되는데...
필드에 나가서 기존에 있던 걸 받아서 쓰는데 한글이 막 깨짐.. 그러면
제일 먼저 이 코드를 넣어봐야 함.
req.setCharacterEncoding("UTF-8");
이 코드를 넣었더니 한글 처리가 됨. 그러면 땡큐인데
이걸 넣어도 안됨. 그런데 get 메서드에서 깨짐. 그러면 서버를 확인해봐야 하고...
post메서드인데 깨짐 그러면 요청을 보낼 때의 char set과 요청을 받을 떄의 char set이 달라서 깨지는 거...
자 이제 dummycharSet 프로젝트는 닫고.. tomcat8의 server.xml을 열어보자...
tomcat8은 한글 처리되게 되어있지만,,, 안전빵으로 얘를 넣어두자.
useBodyEncodingForURI="true"
/**
* 문자열의 형태로 전송되는 파라미터 핸들링.
*
* 1. Request Line (GET)
* - 서버의 설정으로 특수문자 처리
* ex) server.xml -> connector -> URIEncoding, userBodyEncodingForURI
* 2. Request Body (POST, PUT/Patch)
* - request.setCharacterEncoding(encoding)
*
* **특수문자가 포함된 경우, - 해당 데이터에 접근하기 전에 charset설정 필요.
*
*/근데 이거를 외울 게 아니라, 각자 서버....그...놈들마다....어떻게 처리하는지 메뉴얼을 찾아봐야 하는거지...
querystring이 없으면 parameter도 없음....partdata로...존재...
------
servlet 2.0에는 이거 자체가 없어서...추가적인 설정이 필요함...@MultipartConfig
band 대역.. chunk...
chunk... 한번에 보낼 수 있는 데이터의 크기.... chunk 단위로 쪼개서 보낸다...
upload...
- mark annotation...
ex) @MultipartConfig
- single value annotation : 속성의 이름이 value일 떄 그 속성의 이름을 생략할 수 있음...
ex) @WebServlet("/formDataProcess_Part")
- multivalue annotation
ex) @WebServlet(value = "/formDataProcess_Part", loadOnStartup = 1)
얘는 Value라는 값이 없어서 single value annotation으로 못 쓰고 multi-value annotaiton으로 써야 함 chunk를 쪼갠다 할 때 chunk를 임시로 저장해 두는 곳 = location / 한번에 올라가는 파일의 최대 크기 = maxfileSixe (10mb), 최대 올라갈 수 있는 파일 용량 = maxRequestSize = 10mb 5개 (50mb) getparameter나 getpart나 사용법은 비슷. input tag의 name 속성을 이용하여 값을 가져옴. part의 경우에는 parameter name이 아니라 part name이라고 할 수 있음. --
bean 규칙을 맞춰서 하고 있는데... 여기 대문자로 쓰면 해석(reflection)이 안 됨. 이 규칙을 지켜야 함. int와 interger의 차이는 null값을 받을 수 있느냐 없느냐임.. .integer는 null받을 수 있음.... 용도에 맞게 맞추자
--
Serializable
: mark interface : override 할 게 하나도 없음...
transient : 자바 직렬화 할 때 제외하는 것... ---
BeanUtils...대신 뭘 처리해준대...
Apache Commons – Apache Commons
Welcome to Apache Commons Apache Commons is an Apache project focused on all aspects of reusable Java components. The Apache Commons project is composed of three parts: The Commons Proper - A repository of reusable Java components. The Commons Sandbox - A
commons.apache.org
BeanUtils 라는 conponent...reflection and introspection을 해준대.. (https://commons.apache.org/proper/commons-beanutils/download_beanutils.cgi) commons-beanutils-1.9.4-bin.zip
dependencies
(https://commons.apache.org/proper/commons-logging/download_logging.cgi)
commons-collections-3.2.2-bin.zip
web에서는 add to build path 를 할 필요가 없ㅇ다...
beanUtils....를 쓰려면...population을 쓰려면...reflection이 뭔지 알아야...
업로드..이진데이터를 CLOB / BLOB...문자나 이진데이터로 처리할 수도있고...
'main' 카테고리의 다른 글
22-09-06_jsp (1) 2022.09.06 22-09-06_파이썬 (0) 2022.09.06 220905_파이썬 (0) 2022.09.05 22-08-26_python Day03 (0) 2022.08.26 22-08-25_web programming draft note (0) 2022.08.25