SendRedirect()与RquestDispatcher().forward()

区别:

连环请求条件下:

RquestDispatcher().forward():

1.采用forward()方法,request会在同一服务器上的不同的servlet之间传递,但整个过程结束前并不会返回给客户端.

2.forward()方法的整个过程中,requset和response在不同的servlet之间传递,其途径的servlet都可以取到其中存贮的参数.

3.forward()方法在跳转时并不会对浏览器地址栏中的内容做任何改变,用户看不到整个请求的过程.

4.forward()方法的速度会快一些,它完成整个流程才会返回给客户端一次数据.

SendRedirect():

1.对于SendRedirect()方法,request可能会被转移到新的主机或者服务器上.

2.SendRedirect()方法产生的请求可以会在浏览器地址栏中显示.若发送的是一个URL,则会将URL返回给客户端,然后将URL作为新的请求再次请求服务器

3.SendRedirect()方法在每次请求都会产生一个新的request和一个新的response,旧的将被回收.

4.SendRedirect()方法的速度要慢一些,因为每次请求都要返回一次数据给客户端,且每次都要产生新的request和新的response.

5.若需要在请求中存储数据,只能考虑存在session中或者拼接在地址栏后面已请求的方式传递.


优劣:

forward()可进行不同业务逻辑间的数据传递,速度较快,可对一个页面进行分次加载,但是不能中途更换协议.

SendRedirect()在重定向请求时,用户进行刷新操作时不会重复提交请求.


小技巧:

可将jsp文件放置在WEB-INF文件夹中,URL无法访问该文件,但是servlet可以访问,request.getRequestDispatcher("/WEB-INF/login.jsp").forward(request,response);

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,260评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,839评论 18 399
  • 这部分主要是与Java Web和Web Service相关的面试题。 96、阐述Servlet和CGI的区别? 答...
    杂货铺老板阅读 1,441评论 0 10
  • 转发的作用:在多个页面交互过程中实现请求 数据的共享 转发的实现: RequestDispathcer 对象 fo...
    iTunesea阅读 3,889评论 0 1
  • 一. Java基础部分.................................................
    wy_sure阅读 3,870评论 0 11