亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Servlet中轉(zhuǎn)發(fā)和重定向的路徑問題以及表單提交路徑問題

explorer_ddf / 2442人閱讀

摘要:二請求轉(zhuǎn)發(fā)與響應(yīng)重定向中路徑參數(shù)區(qū)別假設(shè)通過請求到達該方法所屬的。請求轉(zhuǎn)發(fā)參數(shù)可以指定為相對路徑或絕對路徑。同理提交表單給路徑問題頁面提交表單給時,路徑的寫法要格外注意。

轉(zhuǎn)自:http://blog.sina.com.cn/s/blo...

一、請求轉(zhuǎn)發(fā)與響應(yīng)重定向的種類

有兩種方式獲得Servlet轉(zhuǎn)發(fā)對象(RequestDispatcher):一種是通過HttpServletRequest的getRequestDispatcher()方法獲得,一種是通過ServletContext的getRequestDispatcher()方法獲得。

Servlet重定向的方法只有一種:HttpServletResponse的sendRedirect()方法。

這三個方法的參數(shù)都是一個URL形式的字符串,但在使用相對路徑或絕對路徑上有所區(qū)別。

二、請求轉(zhuǎn)發(fā)與響應(yīng)重定向中路徑參數(shù)區(qū)別

假設(shè)通過http ://localhost/myApp/cool/bar.do 請求到達該方法所屬的Servlet。

1、響應(yīng)重定向 ◆ HttpServletResponse.sendRedirect(String)

參數(shù)可以指定為相對路徑、絕對路徑或其它Web應(yīng)用。

i:相對路徑:response.sendRedirect("foo/stuff.do"),容器相對于原來請求URL的目錄加參數(shù)來生成完整的URL——http ://localhost/myApp/cool/foo/stuff.do。

ii:絕對路徑:response.sendRedirect("/foo/stuff.do"),容器相對于Web應(yīng)用本身加參數(shù)建立完整的URL,這是因為 重定向response.sendRedirect("")是服務(wù)器向客戶端發(fā)送一個請求頭信息,由客戶端再請求一次服務(wù)器,請求是在服務(wù)器外進行的,即完整的url是——http ://localhost/foo/stuff.do。

iii:其它Web應(yīng)用:response.sendRedirect("http://www.xxx.com")容器直接定向到該URL。

2、請求轉(zhuǎn)發(fā) ◆HttpServletRequest.getRequestDispatcher(String)

參數(shù)可以指定為相對路徑或絕對路徑。

i:相對路徑情況下生成的完整URL與重定向方法相同。

ii:絕對路徑與Servlet重定向不同,容器將相對于Web應(yīng)用的根目錄加參數(shù)生成完整的URL(即“/”根路徑就是相對于虛擬路徑)這是因為轉(zhuǎn)發(fā)是在服務(wù)器內(nèi)部進行的,寫絕對路徑/開頭指的是當(dāng)前的Web應(yīng)用程序即:

request.getRequestDispatcher("/foo/stuff.do")生成的URL是
http ://localhost/myApp/foo/stuff.do。

3、 ◆ ServletContext.getRequestDispatcher(String)

參數(shù)只能指定為絕對路徑,生成的完整URL與HttpServletRequest.getRequestDispatcher(String)相同。
同理:
JSP 提交表單給 Servlet 路徑問題
JSP頁面提交表單給Servlet時,路徑的寫法要格外注意。
例如在web.xml中注冊如下的servlet:


addStudent
org.mytest.addStudent



addStudent
/servlet/addStudent

假如說,你工程名字為HibernateApp3,JSP頁面提交表單給servlet時有兩種寫法:

1.相對路徑...
2.絕對路徑...
或者 /servlet/addStudent" method=post>...

注意:/代表根目錄,如果路徑是使用/開頭,Tomcat就是webApp那個目錄,如果你不是/開頭代表你從當(dāng)前工程的目錄開始,例如:webApp/HibernateApp3/

這一點非常重要,很多提交表單時發(fā)生的錯誤都是因為提交路徑出錯造成的。

附、的路徑如果是"/"開頭,則表示相對于主機,如果不是則表示相對于當(dāng)前請求

綜上所述:這里最最關(guān)鍵的要能清楚發(fā)出請求目的資源的請求是在服務(wù)器內(nèi)部還是服務(wù)器外部:內(nèi)部時,“/”就是項目的虛擬目錄;外部時,“/”就是代表主機的根目錄

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/54611.html

相關(guān)文章

  • Servlet第四篇【request對象常用方法、應(yīng)用】

    摘要:瀏覽器的中文數(shù)據(jù)提交給服務(wù)器,以編碼對中文編碼,當(dāng)我在讀取數(shù)據(jù)的時候,拿到的當(dāng)然是亂碼。接下來使用方式傳遞中文數(shù)據(jù),把表單的方式改成即可當(dāng)我們訪問的時候,又出現(xiàn)亂碼了于是我按照上面的方式,把對象設(shè)置編碼為試試結(jié)果還是亂碼。 什么是HttpServletRequest HttpServletRequest對象代表客戶端的請求,當(dāng)客戶端通過HTTP協(xié)議訪問服務(wù)器時,HTTP請求頭中的所有信...

    raise_yang 評論0 收藏0
  • 轉(zhuǎn)發(fā)和重定向區(qū)別?

    實際發(fā)生位置不同,地址欄不同 轉(zhuǎn)發(fā)是發(fā)生在服務(wù)器的 轉(zhuǎn)發(fā)是由服務(wù)器進行跳轉(zhuǎn)的,細心的朋友會發(fā)現(xiàn),在轉(zhuǎn)發(fā)的時候,瀏覽器的地址欄是沒有發(fā)生變化的,在我訪問Servlet111的時候,即使跳轉(zhuǎn)到了Servlet222的頁面,瀏覽器的地址還是Servlet111的。也就是說瀏覽器是不知道該跳轉(zhuǎn)的動作,轉(zhuǎn)發(fā)是對瀏覽器透明的。通過上面的轉(zhuǎn)發(fā)時序圖我們也可以發(fā)現(xiàn),實現(xiàn)轉(zhuǎn)發(fā)只是一次的http請求,一次轉(zhuǎn)發(fā)中...

    VEIGHTZ 評論0 收藏0
  • 超詳細Java面試題總結(jié)(四 )之JavaWeb基礎(chǔ)知識總結(jié)

    摘要:系列文章請查看超詳細的面試題總結(jié)一之基礎(chǔ)知識篇超詳細的面試題總結(jié)二之基礎(chǔ)知識篇超詳細的面試題總結(jié)三之集合篇常見問題下面的都是自己之前在學(xué)習(xí)的時候總結(jié)的,對于鞏固的基礎(chǔ)知識應(yīng)該有很大幫助。注意多線程的并發(fā)的讀寫類屬性會導(dǎo)致數(shù)據(jù)不同步。 系列文章請查看: 超詳細的Java面試題總結(jié)(一)之Java基礎(chǔ)知識篇 超詳細的Java面試題總結(jié)(二)之Java基礎(chǔ)知識篇 超詳細的Java面試題總結(jié)(...

    Leo_chen 評論0 收藏0

發(fā)表評論

0條評論

explorer_ddf

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<