1. request : 유저의 요청에 대한 모든 것이 담겨있다
2. enctype: 기본적으로는 form encoded (POST)
3. textarea 의 엔터 반영하는 법
1) <pre>태그이용하기
2) String의 replaceAll()메소드 이용하기 . replaceAll("\n","<br>")
4. checkbox에 체크하지않은경우 - 객체 null로 됨(이걸로 if로 제어할수있다... 근데 내생각엔 굳이 이걸 서버단까지 안가져오고. 걍 클라이언트 단에서 javascript로 유효성검사 해주는게 좋을것같음. 선택사항체크표시 아니라면..)
5. checkbox에 value안 넣었을경우 - on이라는 값이 들어간다
6. request에는 - getparameter뿐만아니라. getparametervalues라는 메소드도 있다. 이걸 이용해서 String[]배열로 받을 수있음.
7. enctype을 추가하면 - request에서 값을 가져올때 주의해야함. NullPointerException이뜬다-
request.getParameter로 받은 값은 단순 String, 즉 첨부파일의 이름일 뿐이다
따라서 첨부된파일을 가져오려면 다른 방식으로 request에 접근해야함.
8. 내생각)
enctype="multipart/form-data"로 지정안하고
단순 파일명만 string으로 받아서 저장하구
실제 파일은 ajax로 처리하면 되지 않을라나~~>???
9. request에서 뽑아온 uri정보로부터 - 명령어별로 분기해서 유저의 요청을 처리할수있다.
10.request.getRealPath()메소드를 통해서 실제 "물리적"경로를얻을수있다. 첨부파일을 저장할 때 필요하다. 웹상에서 접근하는 논리적주소가 아니라 물리적 경로!!
11. 그런데 이클립스상에서 돌아가는 톰캣은 - 실제 톰캣이 아니고. 서버를 복사해서 실행하는 패턴으로 돌아간다. ->metadata에 저장된다. 실제 서비스 경로가 아님
=>실제 서버에 프로젝트를 올리는경우와 경로가 달라진다.
실제서버의 스토리지에 유저가 올린 파일을 저장해야 하니까.. 실제로 프로젝트를 서비스하려면 이 경로로 바꾸어주어야함. 지금은 학습용이니까!!
12. getRealPath()는 request에도 있고 application객체에도 있는데. request용 getRealPath()는 deprecated되었으므로application에서 뽑는것을 추천함.!! 서버를 이용하는 유저 전체가 공유하는 주소인것이다.
13. request 에 setAttirbute로 저장하는 값 -> object타입이다. set으로 저장하고 - get으로 가져온다 (Object타입. )
getParameter는 유저가 submit해서 던진값.
setAttribute() , getAttribute()는 서버안에서 던지고 받는값. request 변수.
14.
enctype의 종류~
ajax는 일반 문자열 데이터(text/plain)
post방식은 form-urlencoded로 패키지화되어서 전달된다. get보다 안전(상대적으로, 왜냐면 uri에 유저가 보낸 값이 노출되지않으므로)
파일첨부는 멀티파트이용.
댓글 없음:
댓글 쓰기