请求跳转
服务器端的一种跳转方式
req.getRequestDispatcher("跳转到的路径").forward(req,resp);
特点
地址栏不会发生改变
服务端(一般就指浏览器)行为
请求跳转只有一次请求
数据在request作用域中可以共享
绝地地址定位到站点后
重定向
客户端的一种跳转方式
resp.sendRedirect("跳转到的路径");
特点
地址栏发生变化
客户端行为
两次请求
数据在两个request作用域中不共享
绝对地址可写到http://
简而言之,就像买东西一样 我是买衣服的 但你要找我买零食
我去别的地方买 然后发给你 这个叫请求转发
我把你想要的东西的商家推给你(地址栏发生变化) 而你去和那个商家的聊天内容我并不会知道(request不共享)这个叫重定向
(对上面特点中绝对地址的解释:请求转发的地址只能跳转到当前项目的资源,而重定向可以跳转到任何资源)
import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @WebServlet("/Servlet11") public class Servlet11 extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("Servlet11=================="); // 设置作用域 String admin = "sb"; req.setAttribute("admin",admin); // 请求转发 服务器端req跳转 // req.getRequestDispatcher("index_Servlet10.jsp").forward(req,resp); // 重定向 客户端resp跳转 // resp.sendRedirect("index_Servlet10.jsp"); // 路径问题(跳转到百度) // req.getRequestDispatcher("https://www.baidu.com").forward(req,resp); // HTTP状态 404 - 未找到 // resp.sendRedirect("https://www.baidu.com"); // 可以找到 // 请求转发的地址只能跳转到当前项目的资源,而重定向可以跳转到任何资源 } }