Response.redirect 는 웹 개발자라면 필수적으로 알아야하는 메서드 입니다. 그 이유는 페이지를 이동하기 위해서는 꼭 사용해야 하는 메서드 이기 때문입니다. 그렇다면 Server.Transfer는 무엇일까?
제목처럼 Server.Transfer 와 Response.redirect 하는 역할은 비슷하지만 다른점이 많기에 정리해보려합니다.
Server.Transfer 란?
아래 그림을 보면서 설명합니다.
- Test1.aspx 라는 페이지를 Browser에서 Server로 호출하게 됩니다.
- Test1.aspx 페이지에 Transfer 함수가 존재(Test2.apsx로 Transfer)하고, Server 내에서 Test2.aspx 페이지로 이동시킵니다.
- Browser에서는 Test2.aspx 페이지를 보실 수 있게 됩니다.
Response.redirect 란?
- Test1.aspx 라는 페이지를 Browser에서 Server로 호출하게 됩니다. (Server.Transfer 와 동일합니다.)
- Test1.aspx 페이지에 Response.redirect 가 존재하기에 호출했던 Browser 에 다시 응답 코드인 301/302(응답코드가 궁금하다면 클릭) 을 리턴해줍니다.
- 그리고 다시 Browser 에서 Test2.aspx를 호출하게 됩니다.
- 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 를 사용하게 되었습니다.
'개발 > ASP.NET' 카테고리의 다른 글
[ASP.NET] 404 / 500 Error 일때, Web.config를 이용하자! (2) | 2019.10.10 |
---|---|
[ASP.NET] Global.asax 에 대해서 알아보자. (0) | 2019.08.13 |
NameValueCollection foreach문 사용 (0) | 2018.08.03 |
Web.config 변수 설정 (0) | 2018.08.02 |
ServerControl Rendering 후 html 태그 (0) | 2018.07.26 |