美文网首页
SendRedirect()与RquestDispatcher(

SendRedirect()与RquestDispatcher(

作者: 霄霄霄霄 | 来源:发表于2017-05-07 17:48 被阅读0次

    区别:

    连环请求条件下:

    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);

    相关文章

      网友评论

          本文标题:SendRedirect()与RquestDispatcher(

          本文链接:https://www.haomeiwen.com/subject/yxzutxtx.html