posted @ 2008-05-29 12:10 TuringJava 閱讀(785) | 評(píng)論 (0) | 編輯 收藏
posted @ 2008-05-29 10:18 TuringJava 閱讀(160) | 評(píng)論 (0) | 編輯 收藏
posted @ 2008-04-28 21:45 TuringJava 閱讀(506) | 評(píng)論 (0) | 編輯 收藏
posted @ 2008-04-27 19:15 TuringJava 閱讀(303) | 評(píng)論 (0) | 編輯 收藏
閱讀全文
posted @ 2008-04-25 11:18 TuringJava 閱讀(183) | 評(píng)論 (0) | 編輯 收藏
posted @ 2008-04-25 11:04 TuringJava 閱讀(1629) | 評(píng)論 (0) | 編輯 收藏
posted @ 2008-04-25 10:02 TuringJava 閱讀(250) | 評(píng)論 (0) | 編輯 收藏
posted @ 2008-04-25 09:49 TuringJava 閱讀(605) | 評(píng)論 (0) | 編輯 收藏
posted @ 2008-04-23 21:48 TuringJava 閱讀(1817) | 評(píng)論 (0) | 編輯 收藏
posted @ 2008-04-21 08:41 TuringJava 閱讀(289) | 評(píng)論 (0) | 編輯 收藏
posted @ 2008-04-19 07:59 TuringJava 閱讀(658) | 評(píng)論 (0) | 編輯 收藏
閱讀全文
posted @ 2008-04-05 19:28 TuringJava 閱讀(177) | 評(píng)論 (0) | 編輯 收藏
粗心啊!
閱讀全文
posted @ 2008-04-05 19:24 TuringJava 閱讀(709) | 評(píng)論 (0) | 編輯 收藏
閱讀全文
posted @ 2008-04-04 01:20 TuringJava 閱讀(122) | 評(píng)論 (0) | 編輯 收藏
posted @ 2008-04-03 21:59 TuringJava 閱讀(200) | 評(píng)論 (0) | 編輯 收藏
posted @ 2008-03-29 21:09 TuringJava 閱讀(742) | 評(píng)論 (0) | 編輯 收藏
posted @ 2008-03-15 20:40 TuringJava 閱讀(210) | 評(píng)論 (0) | 編輯 收藏
posted @ 2008-03-15 19:54 TuringJava 閱讀(155) | 評(píng)論 (0) | 編輯 收藏
posted @ 2008-03-15 19:49 TuringJava 閱讀(685) | 評(píng)論 (0) | 編輯 收藏
RequestDispatcher是一個(gè)Web資源的包裝器,可以用來(lái)把當(dāng)前request傳遞到該資源,或者把新的資源包括到當(dāng)前響應(yīng)中。RequestDispatcher接口中定義了兩個(gè)方法:include/forward
由于<jsp:include>只能指定固定的jsp文件名,不能動(dòng)態(tài)指定jsp文件名。我們需要把<jsp:include>翻譯為Java code – RequestDispatcher.include();
用法:
<% request.getRequestDispatcher(filename).include(request, response); />
服務(wù)器端的重定向可以有兩種方式,一是使用HttpServletResponse的sendRedirect()方法,一是使用RequestDispatcher的forward()方法.
HttpServletResponse.sendRedirect()方法將響應(yīng)定向到參數(shù)location指定的、新的URL。location可以是一個(gè)絕對(duì)的URL,如response.sendRedirect("http://java.sun.com")也可以使用相對(duì)的URL。如果location以“/”開頭,則容器認(rèn)為相對(duì)于當(dāng)前Web應(yīng)用的根,否則,容器將解析為相對(duì)于當(dāng)前請(qǐng)求的URL。這種重定向的方法,將導(dǎo)致客戶端瀏覽器的請(qǐng)求URL跳轉(zhuǎn)。從瀏覽器中的地址欄中可以看到新的URL地址,作用類似于上面設(shè)置HTTP響應(yīng)頭信息的實(shí)現(xiàn)。
RequestDispatcher.forward()方法將當(dāng)前的request和response重定向到該RequestDispacher指定的資源。這在實(shí)際項(xiàng)目中大量使用,因?yàn)橥瓿梢粋€(gè)業(yè)務(wù)操作往往需要跨越多個(gè)步驟,每一步驟完成相應(yīng)的處理后,轉(zhuǎn)向到下一個(gè)步驟。比如,通常業(yè)務(wù)處理在Servlet中處理,處理的結(jié)果轉(zhuǎn)向到一個(gè)JSP頁(yè)面進(jìn)行顯示。這樣看起來(lái)類似于Servlet鏈的功能,但是還有一些區(qū)別。一個(gè)RequestDispatcher對(duì)象可以把請(qǐng)求發(fā)送到任意一個(gè)服務(wù)器資源,而不僅僅是另外一個(gè)Servlet。 include()方法將把Request Dispatcher資源的輸出包含到當(dāng)前輸出中。
注意,只有在尚未向客戶端輸出響應(yīng)時(shí)才可以調(diào)用forward()方法,如果頁(yè)面緩存不為空,在重定向前將自動(dòng)清除緩存。否則將拋出一個(gè)IllegalStateException異常。
posted @ 2008-01-18 10:56 TuringJava 閱讀(389) | 評(píng)論 (0) | 編輯 收藏