转发和重定向是在Servlet中实现页面的跳转有两种方式
一、请求转发
1.1概念
客户端发送请求,Servlet做出业务逻辑处理。Servlet调用forword()方法,服务器Servlet把目标资源返回给客户端浏览器。
1.2代码
req.getRequestDispatcher("loginSuccess.jsp").forward(req,resp);
var foo = 'bar';
1.3原理
①请求:浏览器要某页面
②forward(req,resp):服务器调用forward方法
③响应:将页面给浏览器
栗子
浏览器找服务器借钱,服务器没钱并且找张三借钱,然后把钱给浏览器。
二、重定向
2.1概念
客户端发送请求,Servlet做出业务逻辑处理。Servlet调用response.sendReadirect()方法,把要访问的目标资源作为response响应头信息发给客户端浏览器。客户端浏览器重新访问服务器资源xxx.jsp,服务器再次对客户端浏览器做出响应。
2.2代码
resp.sendRedirect("loginSuccess.jsp");
2.3原理
①请求:浏览器要某页面
②响应:服务器给了页面的地址。
③请求:浏览器访问页面
③响应:将页面给浏览器
栗子
浏览器找服务器借钱,服务器没钱并且告诉浏览器:张三有钱。
浏览器找张三借钱,然后张三把钱借给浏览器。
三、区别
①请求转发地址栏不会变化,重定向会发生变化。
②请求转发是一次请求、一次响应,重定向是两次请求、两次响应。
③请求转发是请求request的API,重定向是响应response的API。
④请求转发只能在本网站内部,重定向可以定向到任何网站。
⑤请求转发可以进行值传递,重定向不可以。
⑥请求转发的速度比重定向快。