Server 객체의 Transfer, Execute 메소드와 Response 객체의 Redirect 메소드는 모두
현재 ASP 페이지에서 다른 페이지로 리다이렉션 하는 기능은 비슷하지만
내부적으로 처리하는 구조는 완전히 다르다.

 

Response 객체의 Redirect 메소드는 사용자를 다른 웹 페이지(URL)로 이동시킬 수 있다.
하지만 다른 URL로 이동하기 위해 일단은 클라이언트로 한번 전송되어야 한다.
그러므로 같은 서버에 존재하는 ASP 파일로 이동하더라도 직접 ASP 파일로 이동할 수 없고, 처리 속도 또한 느리다.

 

반면, Server객체의 Transfer, Execute 메소드는 클라이언트를 거치지 않고 서버에서 바로 해당 페이지로 이동할 수 있다.
하지만 해당 페이지로 이동한 이후에 수행하는 작업방식은 서로 다르다.

 

Execute 메소드는 호출한 ASP 파일의 실행 결과로 생겨난 결과를 다시 되돌려 받아, 그 ASP 파일을 호출한 원래의 ASP 파일의 나머지 스크립트를 실행한 다음 결과 값을 클라이언트로 보낸다.

 

Transfer 메소드는 호출한 ASP 파일에서 실행된 결과 값이 원래의 ASP 파일로 반환되지 않고 직접 클라이언트로 결과를 보낸다.
따라서 원래의 ASP 파일에서 다른 ASP 파일을 호출한 시점 이후의 스크립트들은 실행되지 않는다.

<%
     Dim id : id = Request("id")
     ...
     Response.Redirect "b.asp?user_id="& id &"&name=yoon"
%>

Response 객체의 Redirect 메소드는 현재 페이지로 전송되어온 파라미터를 받아 다른페이지로 보낼때 ? 뒤로 붙여 다시 보낼 수 있다. 그대로 또는 가공하여 보낼수 있다.

 

반면, Server객체의 Transfer, Execute 메소드는 다른 ASP로 보낼때 파라미터를 넘길 수 없으며, 대신 현재페이지로 전송되어온 파라미터를 다른 ASP에서도 그대로 사용할 수 있다.

 

단, #include와 달리 b.asp에서는 a.asp에서 선언된 변수를 인식하지 못한다.
b.asp를 #include 할 경우 a.asp에서 파라미터를 받아 변수에 담아놓으면 b.asp에서 사용하거나 변경할 수 있고, 동일한 변수를 선언하면 오류가 나기도 한다.

 

Excute 메소드는 b.asp를 a.asp 페이지의 일부인 것처럼 처리하기는 하지만 동일한 이름의 변수를 선언한다고 해서 오류가 난다거나, a.asp의 변수를 사용할 수도 없고 b.asp의 변수를 a.asp에서 사용할 수도 없다.