자바스크립트가 서블릿에 데이터 던져주기에 대한 질문입니다
글쓴이: ntwiz / 작성시간: 목, 2006/10/19 - 9:35오전
안녕하세요. 이 마을에 종종 들러 정보를 얻지요 @_@
헌데 지금 제가 봉착한 문제는
자바스크립으로 encodeURIComponent()로 만든 파라메타값을
서블릿에서 받아 더떻게 하든 디코드된 정상적인 원래 값으로 인식하려는데요.
거참...
encodeURIComponent()안쓰고 넘긴값은 new String(text.getBytes("Cp1252"), "UTF-8")으로 해결되더군요
그런데... 자바스크립으로 encodeURIComponent()을 써서 서블릿으로 넘겼을땐 ????로 도배되어집니다.
gg선언입니다;;;
Forums:
서버쪽에서
서버쪽에서 ecnodeURIComponent() 의 디코딩에 해당하는 함수 decodeURIComponent()같은것을 통해 변환한 후에 문자열의 인코딩값을 위의 방식으로 변경하시면 될 듯 한데요.
^^
-- Signature --
青い空大好き。
蒼井ソラもっと好き。
파란 하늘 너무 좋아.
아오이 소라 더좋아.
서블릿은 서버플이기에
자바스크립으로 다시 받아서 서블릿에 다시 넣을수 없지않나요?;;; -_-a 긁적긁적;
서블릿 자체에서 get 이나 post로 받아서 자바로 변환을 해줘야 할거같은데요..
ㄷㄷㄷ...이걸 모르겠네요;
네 서버에서
네 서버에서 받은것을 서버내에서 디코딩 해주어야 합니다.
제가 이해하기 어렵게 설명을 한것 같네요. ㅡ,.ㅡ
아무튼 클라이언트에서 인코딩 해서 보낸 내용을 서버에서 적절히 디코딩 해서 써야 합니다.
그 부분이 없어서 다 깨져 보이는게 아닌가요?
-- Signature --
青い空大好き。
蒼井ソラもっと好き。
파란 하늘 너무 좋아.
아오이 소라 더좋아.
네 그부분을 몰라서 여쭙는
자바스크립트으로 text = encodeURIComponent(text); 했답니다.
submit() 날려서
------------------------------------------------------------------------
자바서블릿 페이지에서 String text = req.getParameter("text"); 로 받았답니다.
out.print(text); 했더니 페이지에는 ??????로 찍히는군요.
------------------------------------------------------------------------
서블릿페이지에서 자바스크립트의 decodeURIComponent()처럼 깔끔하게 처리해줄 수 있는 방법을 찾습니다 ㅡ,ㅢ
배는 고프고.. 압박은 깊어지고;;; 쩝쩝;;
이 부분에 대해서
이 부분에 대해서 서블릿 스펙에 제대로된 언급이 없기 때문에 항상 문제가 발생합니다. 우선 post 요청에 대해서는 request.setCharacterEncoding("UTF-8") 같은 방식으로 처리해줄 수 있습니다. 필터를 하나 만들어서 모든 요청에 대해 인코딩을 명시해주는 것도 좋은 방법입니다. 그런데 문제는 get 요청입니다. 서블릿 컨테이너마다 처리 방식이 다릅니다. 톰캣 5.x 의 경우 get 에 대해서는 server.xml 에서 인코딩을 설정해줘야 합니다. URIEncoding="UTF-8" 과 같은 방식으로 속성을 줘야 합니다. 아마 connector 정의에 속성으로 줘야했던거 같은데 확실치는 않습니다. 검색해보시기를... 또는 get 요청도request.setCharacterEncoding 에서 정해준 인코딩을 따르도록 설정해줄 수도 있는데 마찬가지로 설정 방법은 잘 기억이 나지 않는군요^^; 역시 구글링을 한번 해보시면 쉽게 찾으실 수 있을겁니다.
오옷!
대략 무슨말씀하시는지는 알겠네요.
그.러.나. 정작 실 코딩에서는 안되는 안습이;;;큭
값넘겨주는 html페이지의 자바스크립트 encodeURIComponent()는 하지 않고 원래 값 그대로 서블릿에 던져줍니다.
그리고 받는 서블릿에서는 String text = new String(req.getParameter("text").getBytes("Cp1252"), "EUC-KR"); 로 받아와서 한글 표기는 임시방편으로 해결했습니다.
(출처: http://www.jkkang.net/cgi-bin/CrazyWWWBoard.cgi?db=servlet&mode=read&num=49&page=8&ftype=6&fval=&backdepth=2 )
URL에는 한글로 나오는게 흠이지만 ;;;; 여튼 이렇게라도 음.....
get방식에 관해 server.xml의 설정을 어떻게 하는지 모르는지라(봐도 몰겠음;;) 무식하게
doGet(HttpServletRequest req, HttpServletResponse resp){doPost(req, resp);} 해버렸습니다
프하하;; 이래도 되는건지 안되는건지는 모르겠으나, 돌아가긴합니다;; (모르면 무식하다란 말이 픗;)
좀더 상세히 가르쳐주신다면 감사 듬뿍 드리지요 허헛;
이 부분에 대해서
(중복 포스팅 됐습니다. 삭제합니다.)
댓글 달기