| 轉發(fā)(forward)、包含(include)及轉向(redirect)的區別與聯(lián)系 [05-4-25 | 中文java技術(shù)網(wǎng) ] | ||
forward,include,redirect是jsp中web頁(yè)面(jsp或servelt)的三種不同的路由關(guān)系,三個(gè)貌似相同,其實(shí)還是有許多差別的,而了解這些細微的差別,在web開(kāi)發(fā)中是很重要的。 說(shuō)明: 一、forward、include由javax.servlet.RequestDispatcher來(lái)封裝,由包容器container提供RequestDispatcher接口的實(shí)現,其中聲明如下: void forward(ServletRequest req,ServletResponse res) void include(ServeltRequest req,ServletResponse res) 可以通過(guò)兩種方式得到RequestDispatcher: 1、ServletContext.getRequestDispatcher(String path); 其中這里的path必須開(kāi)始為"/",即這里的path必須相對于context的root. 2、ServeltRequest.getRequestDispatcher(String path) 這里的path可以為相對路徑,如果path開(kāi)始為"/",則也認為是從context的root開(kāi)始的。 二、Redirect由HttpServletResponse.sendRedirect(String location)來(lái)支持 差別: 三個(gè)都可以對用戶(hù)的request進(jìn)行轉發(fā),但是還是有許多的不同,差別最主要集中在如下幾個(gè)方面: 1、forward與include共亨Request范圍內的對象,而redirect則不行,即:如果一個(gè)javabean被聲明為request范圍的話(huà),則被forward到的資源也可以訪(fǎng)問(wèn)這個(gè)javabean,而redriect則不行。 2、forward與include基本上都是轉發(fā)到context內部的資源,而redirect可以重定向到外部的資源,如: req.sendRedriect("http://www.mocuai.com"); | ||
聯(lián)系客服