【原創】WEB元件的關聯關係

阿-甘發表於2008-09-02

J2EE 平臺為特定URL的 Web元件提供三種相互關聯,分別是請求轉發、URL重定向和包含,這幾種關聯關係之間是有區別的。本節將討論如何使用Java Servlet API來實現請求轉發、URL重定向和包含。

一、請求轉發

請求轉發允許元件傳送請求到某個應用程式中的URL,並通過同一應用程式中的不同URL中的元件來處理該請求,它檢查Web請求中的資料,並將請求定向到合適的元件,以便進行處理。

Servlet可以使用javax.servlet.RequestDispatcher.forward()方法來轉發它所收到的HTTP 請求。接收轉發請求的元件能夠處理該請求並生成一個響應, 或者它還可以將請求轉發到另一個元件。 最初請求的ServletRequest 和 ServletResponse 物件被傳遞給轉發目標元件,通過這種方式,目標元件可以訪問整個請求上下文。

如果Servlet要把請求轉發給同一WEB應用元件,可以使用下面兩行程式碼:

//獲得RequestDispatcher物件
RequestDispatcher requestDispatcher = request.getRequestDispatcher(url);
//把請求轉發到url指定的WEB元件
requestDispatcher.forward(request, reponse);
request和reponse分別為ServletRequest 和 ServletResponse 物件。
在JSP頁面中,可以使用標籤來轉發請求,例如:

對於請求轉發,轉發的源元件和目標元件共享request(即一次請求)範圍內的共享資料。

二、URL重定向

URL 重定向類似於請求轉發, 但也有一些重要的區別,Web元件可以將請求重定向到任一URL, 而不僅僅是同一應用上下文中的URL。另外,重定向的源元件和目標元件之間不共用同一個Request物件,因此不能共享request範圍內的共享資料。

URL 重定向可以通過方法javax.servlet.ServletResponse.sendRedirect()完成,這個方法的唯一引數就是重定向的目標URL ,例如:
response. sendRedirect(url);
提示: URL重定向相當於客戶端重新傳送了一次Http請求。同一WEB應用也可以用重定向,但WEB元件之間不能共用上下文資訊,而且重定向的效率會比較低。

三、包含

包含關係允許一個Web元件聚集來自同一個應用中其他的Web元件輸出資料,並使用被聚集的資料來建立響應結果。在Servlet中可以使用RequestDispatcher.include()方法包含其它的Web元件。

在Servlet中可以寫成RequestDispatcher rd=request.getRequestDispatcher(url)來獲取一個包含物件,然後呼叫rd.include(request,response)包含。

在JSP中使用標籤,例如來包含一個檔案。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/13081368/viewspace-440423/,如需轉載,請註明出處,否則將追究法律責任。

相關文章