- 메타태그 이용
<meta http-equiv="refresh" content="0; url=http://www.google.co.kr"> - 자바스크립트 이용
document.location.href= "http://www.google.co.kr"; - sendRedirect이용
<%
response.sendRedirect("http://www.google.co.kr");
%>
1,2번의 방법은 브라우저가 소스를 보고 판별해서 재요청을 하는것이고 3번째 방법은 전에 포스팅에 올렸던대로 header정보를 이용해서 브라우저가 리다이렉트를 하도록 서버쪽에서 코드를 심는 방법이다.(자바에선 이렇게 쓰고 헤더를 이용하는 방법은 다른 언어에도 있다.)
나는 1번은 잘 사용안하고 보통 2번을 사용하거나 3번을 사용한다. 솔직히 그냥 그때 기분내키는대로?? ㅡ..ㅡ
여러가지 용도가 있겠지만 가장 노말하고 일반적으로 쓰이는 곳이 게시판등의 글등록이 아닐까 싶다.
등록폼 페이지 -> 등록 처리 페이지 -> 처리 후 이동할 페이지
보통 이런 단계를 밟아서 페이지를 만든다. 이제 가장 노말한 형태이다. 등록폼에서 내용을 입력하고 submit을 누르면 등 등록처리 페이지에서 등록처리를 해서 DB에 넣고 alert() 메시지로 등록 성공 혹은 실패 메시지를 뿌려준 뒤에 상황에 맞는 페이지로 이동을 시킨다. 여기서 이동을 시킬때 리다이렉트를 할 필요가 있다. 이동자체야 큰 차이점은 없지만 사용자 입장에서 2번과 3번 방법에 큰 차이점이 있다.
이 2가지 방법 사이에 가장 큰 차이점은 "뒤로가기"의 활성화 여부이다. 이건 UX적인 면에서 큰 차이점이라고 생각한다. 흔히들 많이 보았을 것이다. 처리후 이동한 페이지에서 뒤로가기 버튼을 누르면 등록처리페이지로 뒤로가기가 되서 다시 alert이 뜨고 처리후 이동페이지로 다시 오게되는 현상(또는 에러가 나거나...) 의도대로 하면 되겠지만 처리페이지는 DB저장등을 위해서 존재하는 페이지이기 때문에 뒤로가기과정에서는 나타나지 않는게 정상이 아닌가 싶다. 그래서 좀 정리를 해 봤다.
자바스크립트 document.location.href= "http://www.google.co.kr";로 리다이렉트 했을 경우
IE6 : 등록처리 페이지로 뒤로가기 된뒤 다시 alert뜨고 원래페이지로 다시 돌아옴
IE7 : 등록처리 페이지로 뒤로가기 된뒤 다시 alert뜨고 원래페이지로 다시 돌아옴
Firefox2 : 등록폼 페이지로 뒤로가기 됨
Firefox3 : 등록폼 페이지로 뒤로가기 됨
Opera 9 : 등록처리 페이지로 뒤로가기 되지만 스크립트는 실행되지 않음.
Safari 3 : 등록처리 페이지로 뒤로가기 되지만 스크립트는 실행되지 않음.
Chrome : 등록처리 페이지로 뒤로가기 되지만 Confirm Form Resubmission라는 에러나옴
IE6 : 등록처리 페이지로 뒤로가기 된뒤 다시 alert뜨고 원래페이지로 다시 돌아옴
IE7 : 등록처리 페이지로 뒤로가기 된뒤 다시 alert뜨고 원래페이지로 다시 돌아옴
Firefox2 : 등록폼 페이지로 뒤로가기 됨
Firefox3 : 등록폼 페이지로 뒤로가기 됨
Opera 9 : 등록처리 페이지로 뒤로가기 되지만 스크립트는 실행되지 않음.
Safari 3 : 등록처리 페이지로 뒤로가기 되지만 스크립트는 실행되지 않음.
Chrome : 등록처리 페이지로 뒤로가기 되지만 Confirm Form Resubmission라는 에러나옴
Http Header를 이용한 response.sendRedirect("http://www.google.co.kr");를 했을 경우
IE6 : 등록폼 페이지로 뒤로가기 됨
IE7 : 등록폼 페이지로 뒤로가기 됨
Firefox2 : 등록폼 페이지로 뒤로가기 됨
Firefox3 : 등록폼 페이지로 뒤로가기 됨
Opera 9 : 등록폼 페이지로 뒤로가기 됨
Safari 3 : 등록폼 페이지로 뒤로가기 됨
Chrome : 등록폼 페이지로 뒤로가기 됨
IE6 : 등록폼 페이지로 뒤로가기 됨
IE7 : 등록폼 페이지로 뒤로가기 됨
Firefox2 : 등록폼 페이지로 뒤로가기 됨
Firefox3 : 등록폼 페이지로 뒤로가기 됨
Opera 9 : 등록폼 페이지로 뒤로가기 됨
Safari 3 : 등록폼 페이지로 뒤로가기 됨
Chrome : 등록폼 페이지로 뒤로가기 됨
파이어폭스를 제외하고는 location.href를 사용하면 등록처리 페이지가 뒤로가기로 활성화가 된다. 사용자 편의성과 보안(?)면에서도 Http Header를 이용한 방식이 더 좋아보인다.
참고삼아 메타태그를 이용해서도 테스트를 해보았다. 메타태그를 이용했을때도 등록처리 페이지는 뒤로가기에 해당되지 않는다...
IE6 : 등록폼 페이지로 뒤로가기 됨
IE7 : 등록폼 페이지로 뒤로가기 됨
Firefox2 : 등록폼 페이지로 뒤로가기 됨
Firefox3 : 등록폼 페이지로 뒤로가기 됨
Opera 9 : 등록폼 페이지로 뒤로가기 됨
Safari 3 : 등록폼 페이지로 뒤로가기 됨
Chrome : 등록폼 페이지로 뒤로가기 됨
IE6 : 등록폼 페이지로 뒤로가기 됨
IE7 : 등록폼 페이지로 뒤로가기 됨
Firefox2 : 등록폼 페이지로 뒤로가기 됨
Firefox3 : 등록폼 페이지로 뒤로가기 됨
Opera 9 : 등록폼 페이지로 뒤로가기 됨
Safari 3 : 등록폼 페이지로 뒤로가기 됨
Chrome : 등록폼 페이지로 뒤로가기 됨
덧) 테스트한 웹브라우저 버전
IE6, IE 7.0, Firefox 2.0.0.14, Firefox 3.0.3, Opera 9.60 beta, Safari 3.1.2, Google Chrome 0.2.149.30
오옷 열심히 하시는군요 ㅡㅡ;; 그 부지런함의 반만 닮고싶네여 ㅋㅋ
모든 할려만하면 귀찮아지는 나를 보면서 ㅡㅡ;
결국 alert 의 문제가 아닐지.. 굳이 등록되었습니다. 저장되었습니다 삭제되었습니다. 등등.
처리페이지와 이동될페이지가 합쳐지는게 음... 한국은 alert 가 형식적이겠죠? ㅎㅎ
재미있는 실험 잘 봤습니다 ㅎㅎ
저도 곧 한국으로 갈지도 흑흑....회사가 망했거든여 ㅡㅡ;;
일본도 어렵고 한국도 ㅡㅡ;; 좋은회사가 있으려나 흑.
그럼 이만 ㅎㅎ
앗 회사가요? 그렇게 우울한 소식이.... 어떻게 해야할지 고민이 크시겠네요.. ㅠ..ㅠ
얼럿은 가장 많이 쓰는 형식을 그냥 예로 든것일 뿐이고요 이거 알기전에는 리다이렉트 형식이 뒤로가기에 영향을 미친다는 것을 전혀 몰랐거든요. 그리고 얼럿의 전통적인 방식을 절대 사용안한다고만 하기에도 좀 무리가 있고요.
가끔 귀찮은데 귀찮아 하지 않으려고 노력중이죠.. ^^;;
이렇게 보기 좋게 정리하신 걸 보니 저도 다시금 리다이렉트에 대해 생각하게 되네요. ^^
자바스크립트의 location 객체를 이용한 방식은 정말 도저히 어쩔 수 없는 경우(웬만하면 이런 경우는 없죠)가 아니면, 절대로 사용하지 말아야 한다고 생각합니다. 최악의 경우 브라우저에서 뒤로 가기 버튼을 사용할 수가 없어지니까요. 매우 빠르게 클릭하면 뒤로 갈 수도 있지만 덜 익숙한 사용자는 아예 갇혀버리는 사태가 생길 수 있겠더군요.
또 자바스크립트의 alert() 는 모드 상태로 들어가므로 사용자의 제어권을 일시적으로 빼앗게 됩니다. 따라서 반드시 필요한 때가 아니라면 가급적 사용을 자제하는 것이 옳구요.
인간 중심 인터페이스를 연구한 제프 래스킨은 "사용자에게 입력을 요구하지 않는 정보 창은 띄워선 안 된다."라고 했습니다. 이 말은 즉 alert() 처럼 사용자의 입력이 전혀 필요 없는 데도 불구하고 뭔가를 알리기 위해 창을 띄워선 안 된다는 얘기입니다.
보통 국내 초창기 웹 개발 시절부터 간단하게 메시지를 알림 용도로 사용을 해왔지만 창을 끄지 않는 한 다른 행동을 할 수가 없게 되므로 자제해야 한다고 생각합니다. 티스토리 같은 경우 이 원칙을 비교적 잘 지키고 있더군요(모달리스 창인 레이어로 대체).
저도 사실은 두가지 방법을 거의 기분대로 섞어쓰곤 했었는데 이렇게 정리해 놓고 나니까 앞으로는 상황에 맞게 쓸수 있을것 같습니다.
말씀하신 내용에 전적으로 공감합니다. alert는 이제 지양되어야 할 사용자경험이라고 생각하지만 현실적으로는 스토리보드에 alert으로 나와버리면 난감한 경우가 있더군요. 일일이 기획파트에 수정해 달라고 요구하기도 좀 그렇고 제 영역도 아닌데 가르치듯이 말씀하신 현재 웹의 개념을 설명하기도 좀 머하고요.. 분위기 봐서 말하기는 하는데 어쩔수 없이 그냥 하게 되는 경우도 많더군요..
차차 나아지겠죠.. ㅎ
퍼가용 ^^
CCL 확인하시고... 퍼가시면 주소라도 좀.. ^^
대단히 좋은 글이네요 고마워요
감사합니다. ^^