• forward请求转发


    请求转发(forward):一种服务器内部的资源跳转方式

    实现方式:

    reg.getRequestDispatcher("要跳转的路径").forward(req,resp);

     

    创建两个Servlet,并配置他们的访问路径

    1. import javax.servlet.ServletException;
    2. import javax.servlet.annotation.WebServlet;
    3. import javax.servlet.http.HttpServlet;
    4. import javax.servlet.http.HttpServletRequest;
    5. import javax.servlet.http.HttpServletResponse;
    6. import java.io.IOException;
    7. @WebServlet("/d3")
    8. public class ServletForward3 extends HttpServlet {
    9. @Override
    10. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    11. System.out.println("d3.........");
    12. req.getRequestDispatcher("/d4").forward(req,resp);
    13. }
    14. }

    通过上面的程序,请求转发给下面的程序

    1. import javax.servlet.ServletException;
    2. import javax.servlet.annotation.WebServlet;
    3. import javax.servlet.http.HttpServlet;
    4. import javax.servlet.http.HttpServletRequest;
    5. import javax.servlet.http.HttpServletResponse;
    6. import java.io.IOException;
    7. @WebServlet("/d4")
    8. public class ServletForward4 extends HttpServlet {
    9. @Override
    10. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    11. System.out.println("d4.......");
    12. }
    13. }

     

    最后输出    d3.........

                      d4............

    请求转发资源之间共享数据:使用Request对象

    void  setAttribute(String name,Object  o)    存储数据到request域中。

    Object getAttribute(String name)  根据键,获取值

    void removeAttribute(String name)  根据键,删除键值对

    1. import javax.servlet.ServletException;
    2. import javax.servlet.annotation.WebServlet;
    3. import javax.servlet.http.HttpServlet;
    4. import javax.servlet.http.HttpServletRequest;
    5. import javax.servlet.http.HttpServletResponse;
    6. import java.io.IOException;
    7. @WebServlet("/d3")
    8. public class ServletForward3 extends HttpServlet {
    9. @Override
    10. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    11. System.out.println("d3.........");
    12. req.setAttribute("张三","男");
    13. req.getRequestDispatcher("/d4").forward(req,resp); //数据存入域
    14. }
    15. }
    1. import javax.servlet.ServletException;
    2. import javax.servlet.annotation.WebServlet;
    3. import javax.servlet.http.HttpServlet;
    4. import javax.servlet.http.HttpServletRequest;
    5. import javax.servlet.http.HttpServletResponse;
    6. import java.io.IOException;
    7. @WebServlet("/d4")
    8. public class ServletForward4 extends HttpServlet {
    9. @Override
    10. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    11. System.out.println("d4.......");
    12. System.out.println(req.getAttribute("张三"));// 通过键获取域中的值
    13. }
    14. }

     最后输出 :男 

    共享数据就成功了

     请求转发的特点:

    浏览器地址栏路径不发生变化

    只能请求转发到当前服务器的内部资源

    一次请求,可以转发的资源之间使用request共享数据

  • 相关阅读:
    FFmpeg源代码简单分析-编码-av_write_frame()
    grafana将label值转化为metrics
    ArcGIS将遥感影像的0值设置为NoData
    Spring Boot 创建项目 / 目录介绍 / 配置文件
    vue 自适应页面高度
    [网络] https是什么?https是怎么保障我们信息传输的安全的?
    【嵌入式开发 Linux 常用命令系列 9 -- linux系统终端命令提示符设置(PS1)】
    39. Mybatis面试18问,你想知道的都在这里了
    经典排序方法思路简介
    新品上线 Naive Admin Tenant 开箱即用多租户开发框架
  • 原文地址:https://blog.csdn.net/m0_64365315/article/details/126744355