love fish大鵬一曰同風起,扶搖直上九萬里

          常用鏈接

          統計

          積分與排名

          friends

          link

          最新評論

          forward,include,redirect 區別(轉)

          forward,include,redirect是jsp中web頁面(jsp或servelt)的三種不同的路由關系,三個貌似相同,其實還是有許多差別的,而了解這些細微的差別,在web開發中是很重要的。
          說明:
          一、forward、include由javax.servlet.RequestDispatcher來封裝,由包容器container提供RequestDispatcher接口的實現,其中聲明如下:
          void forward(ServletRequest req,ServletResponse res)
          void include(ServeltRequest req,ServletResponse res)
          可以通過兩種方式得到RequestDispatcher:
          1、ServletContext.getRequestDispatcher(String path);
          其中這里的path必須開始為"/",即這里的path必須相對于context的root.
          2、ServeltRequest.getRequestDispatcher(String path)
          這里的path可以為相對路徑,如果path開始為"/",則也認為是從context的root開始的。
          二、Redirect由HttpServletResponse.sendRedirect(String location)來支持
          差別:
          三個都可以對用戶的request進行轉發,但是還是有許多的不同,差別最主要集中在如下幾個方面:
          1、forward與include共亨Request范圍內的對象,而redirect則不行,即:如果一個javabean被聲明為request范圍的話,則被forward到的資源也可以訪問這個javabean,而redriect則不行。
          2、forward與include基本上都是轉發到context內部的資源,而redirect可以重定向到外部的資源,如: req.sendRedriect("http://www.mocuai.com");

          Forward功能的實現,這樣
          private void setForward(String url,ServletRequest request, ServletResponse response)throws Exception {??
          ??????? HttpServletRequest hreq = (HttpServletRequest) request;
          ??????? RequestDispatcher dispatcher =? hreq.getSession().getServletContext().getRequestDispatcher(url);
          ??????? dispatcher.forward(request,response);
          }

          posted on 2006-05-23 17:03 liaojiyong 閱讀(397) 評論(0)  編輯  收藏 所屬分類: JSP

          主站蜘蛛池模板: 涪陵区| 西安市| 阜南县| 平塘县| 崇信县| 年辖:市辖区| 千阳县| 化州市| 酒泉市| 青铜峡市| 明水县| 昭觉县| 新和县| 栾城县| 安多县| 宝鸡市| 神池县| 平谷区| 秦皇岛市| 鄂伦春自治旗| 靖远县| 若羌县| 甘泉县| 麻栗坡县| 天柱县| 敦煌市| 台北县| 察雅县| 广东省| 聊城市| 沽源县| 乌鲁木齐市| 锦屏县| 曲阜市| 昌图县| 永丰县| 甘谷县| 正定县| 木兰县| 峨眉山市| 吉木萨尔县|