1.转发与重定向的区别
-转发在服务器端完成的;重定向是在客户端完成的
-转发的速度快;重定向速度慢
-转发的是同一次请求;重定向是两次不同请求
-转发不会执行转发后的代码;重定向会执行重定向之后的代码
-转发地址栏没有变化;重定向地址栏有变化
-转发必须是在同一台服务器下完成;重定向可以在不同的服务器下完成
-Forward是在服务器端的跳转,就是客户端一个请求发给服务器,服务器直接将请求相关的参数的信息原封不动的传递到该服务器的其他jsp或servlet去处理,而Sendredirect是在客户端的跳转,服务器会返回给客户端一个响应报头和新的URL地址,原来的参数什么的信息如果服务器端没有特别处理就不存在了,浏览器会访问新的URL所指向的servlet或jsp,这可能不是原先服务器上的webservce了。
2.servlet代码示例
//转发,转发是在服务器端转发的,客户端是不知道的
request.getRequestDispatcher("/student_list.jsp").forward(request, response);
//重定向,不会共享request
//以下写法错误,该 "/"代表了8080端口
//response.sendRedirect("/student_list.jsp");
response.sendRedirect(request.getContextPath() + "/student_list.jsp");
request.getRequestDispatcher("/student_list.jsp").forward(request, response);
//重定向,不会共享request
//以下写法错误,该 "/"代表了8080端口
//response.sendRedirect("/student_list.jsp");
response.sendRedirect(request.getContextPath() + "/student_list.jsp");