资源跳转--response重定向和request转发

浏览器向服务器发送请求,ATestServlet接收请求后,使用重定向/转发两种方式向BTestServlet进行资源跳转

ATestServlet.java

@WebServlet(name = "ATestServlet", urlPatterns = "/chap3red_for_a")
public class ATestServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 设置request范围内的共享变量
        request.setAttribute("user", "admin");

        // 重定向至 BTestServlet
        response.sendRedirect("/webpro/chap3red_for_b");
        
		// 转发至 BTestServlet
         request.getRequestDispatcher("/chap3red_for_b").forward(request, response);
    }
}

BTestServlet.java

@WebServlet(name = "BTestServlet", urlPatterns = "/chap3red_for_b")
public class BTestServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Object obj = request.getAttribute("user");
        System.out.println("user = " + obj);
    }
}

代码的运行流程图

response重定向

在这里插入图片描述

request转发

在这里插入图片描述

理解重定向与转发

重定向:张三找李四借钱,李四没钱,所以让张三找王五借钱,张三从王五那借到了钱。张三很感激王五

转发:张三找李四借钱,李四没钱,李四就找王五借钱,并把借来的钱又借给了张三。张三很感激李四

张三相当于浏览器的请求,而李四、王五相当于处理请求的web资源


重定向与转发的对比

web资源跳转的两种方法转发重定向
代码request.getRequestDispatcher(“url-patterns”).forward(request, response)respond.sendRedirect(‘web资源相对于web的路径’)
request对象触发response对象触发
跳转范围项目内资源跳转跨项目资源跳转
数据是否丢失不丢失丢失
何时使用项目内资源跳转;web资源间传递request范围内的数据跨项目资源跳转;页面刷新问题


参考内容:
【动力节点】Servlet__老杜

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值