SendRedirect()与RquestDispatcher(

2017-05-07  本文已影响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);

上一篇下一篇

猜你喜欢

热点阅读