请求转发和重定向的区别
package study; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; /** * 请求转发 与 重定向 的区别 * 1 请求转发的地址栏不会发生改变,而重定向的地址栏会发生改变 * 2 请求转发只有一次请求,而重定向有俩次请求 * 3 请求转发时request对象可以共享,而重定向时request对象不可以共享 * 4 请求转发是服务端行为,重定向是客户端行为 * 5 请求转发的地址只能是当前项目的资源,重定向可以是任意地址 * * @author YAM */ @WebServlet("/s06") public class Servlet06 extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("Servlet06..."); String uname = req.getParameter("uname"); System.out.println(uname); req.setAttribute("upwd", "123456"); //请求转发 // req.getRequestDispatcher("index.jsp").forward(req,resp); //重定向 // resp.sendRedirect("index.jsp"); //请求转发 无法到百度 , 根路径 为 /servlet03_war_exploded/06://baidu.com // req.getRequestDispatcher("http://www.baidu.com").forward(req, resp); //重定向 跳转至百度 resp.sendRedirect("http://www.baidu.com"); } }
jsp代码:
<%--
Created by IntelliJ IDEA.
User: MasterYang
Date: 2022/8/19
Time: 22:45
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<%-- Java 脚本段 --%>
<%
String uname = request.getParameter("uname");
String upwd = (String) request.getAttribute("upwd");
out.print(uname);
out.print("----------");
out.print(upwd);
%>
</body>
</html>

浙公网安备 33010602011771号