Forward & Redirect

1、两者的目的是为了实现HttpServletRequst对象的共享

2、HttpServletResponse.sendRedirect(),容器将把新的URL发送给客户端,客户端将会发生一次新的请求,这样所有的放在HttpServletRequest中的request attributes对象将会失效。

figs/jstr2_0205.gif

而RequestDispatcher.forward()是在容器内发生的,并没有把URL发送给客户端,没有生成一次新的请求,因此原来所有放在HttpServletRequest中的request attributes对象将不会失效。

figs/jstr2_0208.gif

3、URL不同

Redirect因为是客户端,因此是绝对的路径;

String contextPath = req.getContextPath( );
String redirectStr = contextPath + "/result.jsp?username=foo&password=bar";
resp.sendRedirect(resp.encodeRedirectURL(redirectStr));

而Forward因为是在容器内,因此是相对的路径。

String forwardStr = "/result.jsp?username=foo&password=bar";
RequestDispatcher dispatcher = req.getRequestDispatcher(forwardStr);
dispatcher.forward(req, resp);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值