/*편집중*/
웹프로그램특성상 다중의 parameter들을 특정A페이지에 전송하고
그 특정A페이지가 역시나 다중의 parameter를 특정B페이지에 전송하려는 사례는 너무나 허다합니다.
get 방식으로 전달하는 경우의 사례를 들어보기로 하지요.
자동으로 로그인을 처리하는 페이지에 로그인을 할 아이디.패스워드를 흘려보내면서,
로그인후에 이동할페이지를 호출할까 합니다.
http://www.my.com/autoLogin.htm?id=zena&password=zena&returnUrl=mybbs.htm
문제는 returnUrl이 무조건 mybbs.htm?bbsID=1&page=2&keyword=zena
라는 파라미터가 다 붙어있어야만 제 기능의 페이지를 찾아간다면
http://www.my.com/autoLogin.htm?id=zena&password=zena&returnUrl=mybbs.htm?bbsID=1&page=2&keyword=zena
처럼 붙이고자합니다.
그러나 뜻하지않은 장벽이 있으니 autoLogin.htm은 로그인을위한 id,password값은 잘 챙기고, 야속하게도 returnUrl값을 mybbs.htm?bbsID=1 밖에 전달해주지못합니다.
덜컥 mybbs.htm?bbsID=1만 호출되어서 원하던 결과가 나오지않겠지요.
원인은 mybbs.htm?bbsID=1 다음에 나오는 & 기호때문입니다.
다른 파라미터형식으로 온줄로만 알고 무조건 끊어읽기때문입니다.
그럼 미리 B페이지에게도 전달할 uri를 붙인 파라미터를 안전하게 A에게 포함하여 전송하려면 어떤 방법이 있는가?
답은 uri encoding 입니다.
URI Encoding은 한글키워드가 섞인 파라미터를 자주 사용하는 경우에도 애용됩니다.
아마 검색엔진등에서 한글을 검색어로 집어넣었을 때 브라우저의 URL창에 URI Encoding된 글자들이 나타나는 것을 많이 봤을겁니다.
한글은 8비트+8비트로 안전한 전송이 보장되지 않으므로 URI Encoding이 필요하기 때문이죠.
URI Encoding은 브라우저가 알아서 해주므로 URL창에 직접 한글을 쳐도 무관합니다.
URI Encoding된 글자들을 jjava에서 받았을 경우 이를 적절히 Decoding해야 하는데, JDK1.2 에 새로 추가된 java.net.URLDecoder의 decode()라는 메소드를 사용하면 가능합니다.
하나의 파라미터값으로 파라미터가 딸려있는 url형식을 보내야만 할때 encode로 포장해둡니다.
import java.net.*
String returnUrl = URLEncoder.encode("mybbs.htm?bbsID=1&page=2&keyword=zena");
결과가 mybbs.htm%3FbbsID%3D1%26page%3D2%26keyword%3Dzena 로 되지요.
http://www.my.com/autoLogin.htm?id=zena&password=zena&returnUrl=mybbs.htm?bbsID=1&page=2&keyword=zena
로 보내는 대신
http://www.my.com/autoLogin.htm?id=zena&password=zena&returnUrl=mybbs.htm%3FbbsID%3D1%26page%3D2%26keyword%3Dzena
# by zena | 2004/05/18 09:47 |
logicBomb |
트랙백 |
덧글(0)