web开发之转发和重定向区别
第一种是request.getRequestDispatcher().forward(request,response):
1、属于转发,也是效劳器跳转,相当于办法调取,在施行当前文件的历程中转向施行目标文件,两个文件(当前文件和目标文件)属于统一次恳求,前后页共用一个request,可以通过此来传递一些数据或者session信息,request.setAttribute()和request.getAttribute()。
2、在前后两次施行后,地址栏不变,仍是当前文件的地址。
3、不克不及转向到本web利用之外的页面和网站,所以转向的速度要快。
4、URL中所包括的“/”表示利用程序(项目)的途径。
第二种是response.sendRedirect():
1、属于重定向,也是客户端跳转,相当于客户端向效劳端发送恳求之后,效劳器返回一个响应,客户端接收到响应之后又向效劳端发送一次恳求,一共是2次恳求,前后页不共用一个request,不克不及读取转向前通过request.setAttribute()设定的属性值。
2、在前后两次施行后,地址栏发生改动,是目标文件的地址。
3、可以转向到本web利用之外的页面和网站,所以转向的速度相对要慢。
4、URL种所包括的"/"表示根名目的途径。
非凡的利用:对数据停止修改、删除、增加操纵的时候,应当用response.sendRedirect()。假如是采纳了request.getRequestDispatcher().forward(request,response),那么操纵前后的地址栏都不会发生改动,依然是修改的操纵器,假如此时再对当前页面刷新的话,就会从新发送一次恳求对数据停止修改,这也就是有的人在刷新一次页面就增添一条数据的缘由。
怎样采纳第二种方式传递数据:
1、可以选中session,但要在第二个文件中删除;
2、可以在恳求的url中带上参数,如"add.htm?id=122"
如何选中是重定向还是转发呢?平常状况下转发更快,并且能保持request内的对象,所以他是第一选中。但是由于在转发之后,阅读器中URL依然指向开端页面,此时假如重载当前页面,开端页面将会被从新调取。假如你不想看到这样的状况,则选中转发。
相关教程:前端视频教程
以上就是web开发之转发和重定向不同的具体内容,更多请关注百分百源码网其它相关文章!