区别:
1. 通俗的讲,使用服务器端跳转时,客户浏览器的地址栏并不会显示目标地址的URL,而是用客户端跳转时,地址栏当中会显示目标资源的URL
2. 服务器端跳转是由客户端发送一个请求,请求一个服务器资源——如JSP和Servlet——,这个资源又将请求转到另一个服务器资源,然后再给客户端发送一个响应,也就是说服务器端跳转是客户端发送一次请求,服务器端给出一次响应;而客户端跳转的流程则不同。客户端同样是发送一个请求给服务器端资源,这个服务器资源会首先给客户端一个响应,客户端再根据这个响应当中所包含的地址,再次向服务器端发送一个请求,也就是说客户端跳转是两次请求,两次响应;
3. 在进行客户端跳转和服务器端跳转时,都需要指定目标资源的URL,如果这个路径以“”开始。在客户端跳转当中“”代表的是应用服务器根目录,而在服务器端跳转当中代表的是应用程序根目录。
客户端跳转图解:
客户端图解:
准备一个jump.jsp 来分别演示客户端跳转和服务端跳转 (我没配置解析动态网页的服务器,自己也没试过,只能看别人代码理解下大致过程):
客户端跳转:
跳转代码:
<%
response.sendRedirect("hello.jsp");
%>
可以通过firefox的调试工具可以观察到访问jump.jsp返回302(临时客户端跳转),跳转到了hello.jsp
服务端跳转:
跳转代码:
request.getRequestDispatcher("hello.jsp").forward(request, response);
或者使用动作,简化代码
<jsp:forward page="hello.jsp"/>