Request 请求转发

举报
兰舟千帆 发表于 2022/07/21 19:20:39 2022/07/21
【摘要】 Request 请求转发请求转发是发生在服务器内部的一种资源跳转。(1) 浏览器发送请求给服务器,服务器中对应的资源A接收到请求(2)资源A处理完请求后将请求发给资源B(3) 资源B处理完后将结果响应给浏览器(4) 请求从资源A到资源B的过程就叫请求转发资源转发的操作就是我们具体在Servlet代码类中进行操作的。req.getRequestDispatcher(“资源B路径”).forw...

Request 请求转发

请求转发是发生在服务器内部的一种资源跳转。

在这里插入图片描述

(1) 浏览器发送请求给服务器,服务器中对应的资源A接收到请求
(2)资源A处理完请求后将请求发给资源B
(3) 资源B处理完后将结果响应给浏览器
(4) 请求从资源A到资源B的过程就叫请求转发

资源转发的操作就是我们具体在Servlet代码类中进行操作的。

req.getRequestDispatcher(“资源B路径”).forward(req,resp);

我们先创建一个类

package com.itheima.web.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;
import java.nio.charset.StandardCharsets;

/**
 * 请求转发
 */
@WebServlet("/req5")
public class RequestDemo5 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("demo5...");
        System.out.println(request);
        //存储数据
        request.setAttribute("msg","hello");

        //请求转发
        request.getRequestDispatcher("/req6").forward(request,response);

    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);
    }
}

然后我们创建一个目标转发类

package com.itheima.web.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("/req6")
public class RequestDemo6 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("demo6...");
        System.out.println(request);
        //获取数据
        Object msg = request.getAttribute("msg");
        System.out.println(msg);

    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);
    }
}

启动!
先定位到RequestDemo5。
在这里插入图片描述
然后看控制台输出
在这里插入图片描述
这样的请求转发的特点就是主要发生在服务器内部,浏览器地址栏路径是不会的。这样还不能转发到其他的服务器。这是一个很大的限制。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。