Ruquest请求转发

简介: Ruquest请求转发

Ruquest请求转发


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

a7eb0757a96e4f789808427cb4a5c7d7.png

实现方式:

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


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


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

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

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


代码示例:


RequestDemo05:

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("/req5")
public class RequestDemo5 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("demo5...");
        //存储数据
        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);
    }
}

Request06:

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...");
        //获取数据
        Object msg = request.getAttribute("msg");
        System.out.println(msg);
    }
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);
    }
}

执行结果:


URL访问req5:

f69285f0531b451b8310583f935b4bc0.png

控制台输出请求转发的数据:

b3dc86e4941140b2b8b453454b05d265.png

请求转发特点:


1、浏览器地址栏不发生变化

2、只能转发到当前服务器的内部资源

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

目录
相关文章
|
4月前
|
负载均衡 网络协议 应用服务中间件
nginx-http反向代理与负载均衡
nginx-http反向代理与负载均衡
|
7月前
|
前端开发
请求转发和重定向的区别
请求转发和重定向的区别
93 0
|
7月前
|
存储 数据处理
Request请求转发与Respones请求重定向有什么区别?
Request请求转发与Respones请求重定向有什么区别?
|
存储 应用服务中间件 数据库
Servlet请求转发和重定向
Servlet请求转发和重定向
173 0
重定向和请求转发的区别
重定向和请求转发的区别
98 0
|
Java 数据库
Servlet的请求转发和重定向的区别
Servlet的请求转发和重定向的区别
138 0
Servlet的请求转发和重定向的区别
|
应用服务中间件
请求转发(重要)!!
请求转发(重要)!!
152 0
请求转发(重要)!!
|
XML 数据格式
Javaweb 请求转发和请求重定向
1.请求转发和请求重定向区别 请求转发和请求重定向主要区别,包含以下 5 点: 定义不同 请求方不同 数据共享不同 最终 URL 地址不同 代码实现不同 定义不同:🙌
130 0
Javaweb 请求转发和请求重定向
SpringMVC 请求转发和重定向
SpringMVC 实现请求转发和重定向也很方便: 实现请求转发: 🙌
74 0
SpringMVC 请求转发和重定向
|
前端开发
请求转发与请求重定向
请求转发与请求重定向
276 0
请求转发与请求重定向