其他分享
首页 > 其他分享> > 请求转发和重定向的区别

请求转发和重定向的区别

作者:互联网

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>

  

标签:请求,resp,req,转发,import,重定向
来源: https://www.cnblogs.com/MasterYang/p/16607267.html