Response.redirect 는 웹 개발자라면 필수적으로 알아야하는 메서드 입니다. 그 이유는 페이지를 이동하기 위해서는 꼭 사용해야 하는 메서드 이기 때문입니다. 그렇다면 Server.Transfer는 무엇일까?

제목처럼 Server.Transfer 와 Response.redirect 하는 역할은 비슷하지만 다른점이 많기에 정리해보려합니다.

 

 

Server.Transfer 란?

 

아래 그림을 보면서 설명합니다.

 

  1. Test1.aspx 라는 페이지를 Browser에서 Server로 호출하게 됩니다.
  2. Test1.aspx 페이지에 Transfer 함수가 존재(Test2.apsx로 Transfer)하고, Server 내에서 Test2.aspx 페이지로 이동시킵니다.
  3. Browser에서는 Test2.aspx 페이지를 보실 수 있게 됩니다.

 

 

Response.redirect 란?

 

  1. Test1.aspx 라는 페이지를 Browser에서 Server로 호출하게 됩니다. (Server.Transfer 와 동일합니다.)
  2. Test1.aspx 페이지에 Response.redirect 가 존재하기에 호출했던 Browser 에 다시 응답 코드인 301/302(응답코드가 궁금하다면 클릭) 을 리턴해줍니다.
  3. 그리고 다시 Browser 에서 Test2.aspx를 호출하게 됩니다.
  4. Browser에서는 Test2.aspx 페이지를 보실 수 있게 됩니다.

 

 

무엇이 다른가?

A라는 페이지에서 B라는 페이지 이동이라는 것은 두 함수 모두 동일합니다. 하지만 역할이 다르고 방식도 다르기 때문에 상황에 맞게 작성해야 합니다.

 

  • Server.Transfer 는 내부에 존재하는 페이지로 이동하는데만 사용할 수 있습니다.
  • 하지만 Response.Redirect 는 내/외부를 가리지 않고 어떠한 페이지 이동도 가능합니다.
  • Server.Transfer 는 URL 변경이 없습니다. ( www.google.com/default.aspx => www.google.com/list.aspx 로 Server.Transfer 했다면, 우리가 URL 창에서는 www.google.com/default.aspx 을 볼 수 있습니다.)
  • 반대로, Reponse.Redirect 는 당연히 URL 변경이 있습니다.

 

언제 사용했는가?

사실 Response.redirect 는 엄청 많이 사용합니다. 웹 프로그래밍은 페이지 단위로 나뉘기 때문입니다. 엄청나게 긴 소스 코드가 담겨 있는 페이지가 있고, 그 페이지에 다른 분기의 로직을 추가 개발하는 작업이 있었습니다. 그때, 한 페이지의 소스코드가 길어지니, Server.Transfer 를 이용해서 다른 페이지에 개발을 하였습니다.

사용자들은 URL이 변경되지 않기 때문에 한 페이지에서 일어나는(사실 사용자들은 관심도 없겠지만) 액션으로 생각하게 됩니다. 한 페이지에 너무 많은 분기 처리는 좋지 않기 때문에, 특정 분기 처리를 위해서 페이지를 나누는 것도 좋은 방법이라고 생각하기 때문에 Server.Transfer 를 사용하게 되었습니다.

+ Recent posts