转发和重定向的区别

转发:

request.getRequestDispatcher("/pages/user/login.html").forward(request, response);

重定向:

response.sendRedirect(contextPath+"/pages/user/login_success.html");

通过这张图你就可以看到,转发是在服务器之间进行的,它的意思虽然我没有你想要的资源但是我可以帮你找到,

  重定向是告诉你,我Servlet1没有这个资源,但是我告诉你那里有,你自己通过浏览器去找,

 

区别:

转发重定向
浏览器感知在服务器内部完成,浏览器感知不到服务器以302状态码通知浏览器访问新地址,浏览器有感知
浏览器地址栏不改变改变
整个过程发送请求次数一次两次
执行效率效率高效率低
API(或发起者)Request对象Response对象
能否共享request对象数据
WEB-INF下的资源能访问不能访问
目标资源必须是当前web应用中的资源不局限于当前web应用

说明1:默认情况下,浏览器是不能访问服务器web-inf下的资源的,而服务器是可以访问的。

说明2:浏览器默认的绝对路径:http://localhost:8080/

服务器项目的代码中的绝对路径:http://localhost:8080/项目名/

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值