2011-05-06 41 views
0

如何調用Servlet? doPost和doGet之間有什麼區別?爲了說明任何鏈接,歡迎在java中調用servlet

謝謝

+4

聽起來好像你還沒有閱讀關於Servlet API的任何文檔。從[Java EE 5教程的Servlet部分]開始(http://download.oracle.com/javaee/5/tutorial/doc/bnafd.html)。 – 2011-05-06 14:42:42

+1

是的JavaDoc也是非常有用的東西 - http://download.oracle.com/javaee/1.4/api/javax/servlet/http/HttpServlet.html – planetjones 2011-05-06 14:45:06

+1

@Laurent,該鏈接是舊的和過時的。它多年來一直沒有被稱爲「J2EE」。 – 2011-05-06 14:45:40

回答

5

一個Servlet通常在servlet容器配置通過servlet映射調用,當一個請求到servlet容器製造爲匹配映射路徑。在 SunOracle Java site's servlet page有許多資源可用於瞭解有關servlet的更多信息。還有關於Wikipedia的介紹性文章。 編輯:在評論中,@BalusC指出,StackOverflow自己的page for the servlet tag有相當多的有用信息和鏈接  —不錯的一個,Balus。

doPost在HTTP請求是POST時被調用。當它是GET時,會調用doGet。還有其他方法對應於其他HTTP動詞。

3

調用一個servlet被導航到你的Web應用程序在web.xml文件中指定的URL簡單地完成。所以,如果你的servlet調用MyServlet你可能有一些像這樣的代碼在你的web.xml文件:

<servlet> 
<servlet-name>MyServlet</servlet-name> 
<servlet-class>com.mycompany.MyServlet</servlet-class> 
</servlet> 

<servlet-mapping> 
<servlet-name>MyServlet</servlet-name> 
<url-pattern>/myservlet</url-pattern> 
</servlet-mapping> 

在此設置中,導航到http://myapplication.com/myservlet將調用你的servlet。

就doGet和doPost的區別而言,唯一的區別是它們響應的HTTP方法,因爲servlet API會抽象出遠離程序員的實際HTTP GET和HTTP POST方法之間的任何差異。這種抽象允許程序員使用單個接口從請求中獲取參數,而不必擔心傳入參數的方式。當向您的servlet發送HTTP GET請求時,通常通過直接導航doGet來調用doGet。當一個HTTP POST請求被髮送到你的servlet時,doPost被調用,這通常是用另一個html頁面的表單發佈完成的。

+0

@Brad - 雖然GET和POST在某些方面有所不同。您可以使用GET傳遞參數,而不是將它們添加爲URL參數嗎?我不認爲GET允許你以POST的方式在消息正文中傳遞參數。 – DaveH 2011-05-06 14:50:17

+0

@Dave:我不太明白爲什麼這可能會形成一個問題。如果你需要通過身體傳遞信息,只需使用POST。 – BalusC 2011-05-06 14:52:28

+0

@DaveHowes:這是正確的;然而,'HttpServletRequest'類可以訪問通過單個接口訪問的名稱/值對數據(來自查詢字符串或來自標準表單POST),所以在編程方面,您並不總是需要花費很多精力去擔心字段來自。 (雖然你可以在需要的時候。)當然,如果你使用不同類型的有效載荷(這並不少見)對POST進行響應,那麼你必須明確地處理(並在'doPost'中)。 – 2011-05-06 14:52:36