欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > 重定向与转发

重定向与转发

2024/10/25 21:20:32 来源:https://blog.csdn.net/weixin_47503016/article/details/140215960  浏览:    关键词:重定向与转发

在这里插入图片描述
转发参数不会自动包含在新的请求中。若要将参数传递给重定向地址,可以在服务器端显式地添加参数到重定向URL中。

在重定向URL中包含参数

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;@WebServlet("/initialRequest")
public class InitialRequestServlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// 获取原始请求参数String param = request.getParameter("param");// 重定向到新的URL,并在重定向URL中包含原始参数response.sendRedirect("redirectedRequest?param=" + param);}
}

处理重定向后的请求

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;@WebServlet("/redirectedRequest")
public class RedirectedRequestServlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// 获取重定向后请求中的参数String param = request.getParameter("param");response.setContentType("text/html");response.getWriter().println("<h1>Redirected Request</h1>");response.getWriter().println("<p>Param: " + param + "</p>");}
}

在这里插入图片描述
转发会携带初始请求的参数
转发

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;@WebServlet("/initialRequest")
public class InitialRequestServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// 获取原始请求参数String param = request.getParameter("param");// 在请求属性中保存参数request.setAttribute("param", param);// 转发请求到新的Servletrequest.getRequestDispatcher("/forwardedRequest").forward(request, response);}
}

转发之后

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;@WebServlet("/forwardedRequest")
public class ForwardedRequestServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// 获取转发请求中的参数String param = (String) request.getAttribute("param");response.setContentType("text/html");response.getWriter().println("<h1>Forwarded Request</h1>");response.getWriter().println("<p>Param: " + param + "</p>");}
}

在这里插入图片描述
区别补充: 重定向不会自动携带初始请求参数,如需要需手动在代码里补全对应的参数;转发会自动携带初始请求的参数。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com