浏览器的页面跳转具体分为服务器端跳转和客户端跳转两类。
一、服务器跳转
1、解释
所谓服务器端跳转就是指地址栏内容不变(即客户端浏览器的地址栏不会显示跳转后地址的URL)。由客户端发送一个请求,请求一个服务器资源,这个资源又将请求跳转到另一个服务器资源,然后再给客户端发送一个响应,即服务器端跳转。所以,这种跳转客户端发送一次request,服务器端给出一次response。
2、跳转方法
request.getRequestDispatcher(“success.html”).forward(request,response)。
它是只要执行到此语句之后则立刻进行跳转,可以传递request属性。即跳转到指定的页面执行其他代码,执行完毕后返回接着执行转发语句后的代码。
二、客户端跳转
1、解释
所谓客户端跳转是指地址栏内容发生改变(地址栏当中会显示目标资源的URL)。当客户端client向服务器端server发送一个请求,要求获取一个资源时,在server接收到这个请求后发现请求的这个资源实际存放在另一个位置,于是server在返回的response中写入那个请求资源的正确的URL,并设置reponse的状态码为301(表示这是一个要求浏览器重定向的response),当client接受到这个response后就会根据新的URL重新发起请求。重定向有一个典型的特征,即,当一个请求被重定向以后,最终浏览器上显示的URL往往不再是开始时请求的那个URL了。所以客户端共发送两次请求request,服务器端给出两次回应response。
2、跳转方法
response.sendRedirect(“fail.html”)
所有页面执行完之后再进行跳转,不能传递request范围的属性,但是可以通过地址重写的方式向跳转页传递参数。
三、路径跳转问题
-
页面访问请求中(客户端跳转) , 绝对路径需要自己加上工程名 , 相对路径相当于在工程根目录
绝对路径: /… 相当于 http:\localhost:8080/…
相对路径: … 相当于 http:\localhost:8080/cart/… -
服务器方法中 (服务器跳转), 绝对路径相当于工程根目录 , 相对路径相当于当前路径的同级目录
绝对路径: /… 相当于 http://localhost:8080/cart/…
相对路径: … 相当于 http://localhost:8080/cart/list/…