请求的转发
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网络请求封装