请求的转发

Posted icecream

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请求的转发相关的知识,希望对你有一定的参考价值。

请求的转发

什么是请求的转发?

请求转发是指,服务器收到请求后,从一个资源跳转到另一个资源的操作。

下面是一个示例,带参数访问servlet1,servlet1会跳转到servlet2.

servlet1

package LWB;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class Servlet1 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String username=req.getParameter("username");
        System.out.println("在Servlet1中查看参数"+username);
        req.setAttribute("key1","柜台1的章");
        //请求转发必须要以斜杠打头,斜杠表示地址为:http://ip:port/工程名/,映射到IDEA代码的web目录
        RequestDispatcher requestDispatcher=req.getRequestDispatcher("/servlet2");
        requestDispatcher.forward(req,resp);

    }
}

servlet2

package LWB;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class Servlet2 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String username=req.getParameter("username");
        System.out.println("在Servlet2中查看参数"+username);
        Object key1=req.getAttribute("key1");
        System.out.println("柜台1是否有章:"+key1);
        //处理自己的业务
        System.out.println("Servlet2处理自己的业务");
    }
}

请求转发的特点:

1、浏览器地址栏没有变化

2、请求转发是一次请求

3、他们共享Request域中的数据

4、可以转发到WEB-INF目录下,因为一般情况下,WEB-INF目录是没有办法直接进行访问的,但是可以通过请求转发跳转到WEB-INF目录中。

5、不能访问工程以外的资源

以上是关于请求的转发的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段14——Vue的axios网络请求封装

VSCode自定义代码片段14——Vue的axios网络请求封装

Python 向 Postman 请求代码片段

Nginx转发TCP请求

Nginx转发请求过程解析

request重定向或者是response转发请求后面的代码依然执行