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开发之转发和重定向区另外细致内容,更多请关注 百分百源码网 其它相干文章!