在編寫Servlet 時(shí)需要用到兩個(gè)用于所有 Servlet 的基本軟件包:javax.servlet 和 javax.servlet.http。下面主要介紹javax.servlet.http提供的HTTP Servlet應(yīng)用編程接口。
首先介紹一下Java Servlet的基本方法。
init() 方法
在Servlet的生命周期中,僅執(zhí)行一次 init() 方法,即在服務(wù)器裝入Servlet時(shí)執(zhí)行。通過配置服務(wù)器,可以設(shè)定在啟動(dòng)服務(wù)器或客戶機(jī)首次訪問Servlet 時(shí)裝入Servlet。無論有多少客戶機(jī)訪問Servlet,都不會重復(fù)執(zhí)行 init()。
service() 方法
service()方法是Servlet的主體部分??蛻魧σ粋€(gè)HttpServlet對象的每次請求都會調(diào)用該對象的service() 方法,并傳遞給這個(gè)方法一個(gè)"請求"對象和一個(gè)"響應(yīng)"對象作為參數(shù)。"請求"對象提供有關(guān)請求的信息,而"響應(yīng)"對象提供了一個(gè)將響應(yīng)信息返回給瀏覽器的通信途徑。javax.servlet 軟件包中的相關(guān)類為ServletRequest和ServletResponse,而javax.servlet.http 軟件包中的相關(guān)類為HttpServletRequest 和 HttpServletResponse。Servlet 通過這些對象與服務(wù)器通信并最終與客戶機(jī)通信。Servlet 能通過調(diào)用"請求"對象的方法獲知客戶機(jī)環(huán)境、服務(wù)器環(huán)境的信息和所有由客戶機(jī)提供的信息;通過調(diào)用"響應(yīng)"對象的方法,Servlet可以向客戶機(jī)發(fā)送響應(yīng)。
HttpServlet中的service()方法默認(rèn)的服務(wù)功能是調(diào)用與 HTTP 請求的方法相應(yīng)的 do 功能。例如,如果 HTTP 請求方法為 GET,則默認(rèn)情況下就調(diào)用 doGet()。當(dāng)一個(gè)客戶通過HTML表單發(fā)出一個(gè)HTTP POST請求時(shí),doPost()方法被調(diào)用。與POST請求相關(guān)的參數(shù)作為一個(gè)單獨(dú)的HTTP 請求從瀏覽器發(fā)送到服務(wù)器。當(dāng)需要修改服務(wù)器端的數(shù)據(jù)時(shí),應(yīng)該使用doPost()方法。
Servlet的響應(yīng)可以是下列幾種類型:
·一個(gè)輸出流,瀏覽器根據(jù)它的內(nèi)容類型(如text/HTML)進(jìn)行解釋。
·一個(gè)HTTP錯(cuò)誤響應(yīng),重定向到另一個(gè)URL、Servlet和JSP。
destroy() 方法
destroy() 方法僅執(zhí)行一次,即在服務(wù)器停止且卸載Servlet 時(shí)執(zhí)行該方法。當(dāng)服務(wù)器卸載 Servlet 時(shí),將在所有 service() 方法調(diào)用完成后,或在指定的時(shí)間間隔過后調(diào)用 destroy() 方法。一個(gè)Servlet 在運(yùn)行service() 方法時(shí)可能會產(chǎn)生其他的線程,因此在調(diào)用 destroy() 方法時(shí),必須確認(rèn)這些線程已終止或完成。
GetServletConfig()方法
GetServletConfig()方法返回一個(gè) ServletConfig 對象,該對象用來返回初始化參數(shù)和ServletContext。ServletContext 接口提供有關(guān)Servlet 的環(huán)境信息。
GetServletInfo()方法
GetServletInfo()方法是一個(gè)可選的方法,它提供有關(guān)Servlet 的信息,如作者、版本、版權(quán)。
首先介紹一下Java Servlet的基本方法。
init() 方法
在Servlet的生命周期中,僅執(zhí)行一次 init() 方法,即在服務(wù)器裝入Servlet時(shí)執(zhí)行。通過配置服務(wù)器,可以設(shè)定在啟動(dòng)服務(wù)器或客戶機(jī)首次訪問Servlet 時(shí)裝入Servlet。無論有多少客戶機(jī)訪問Servlet,都不會重復(fù)執(zhí)行 init()。
service() 方法
service()方法是Servlet的主體部分??蛻魧σ粋€(gè)HttpServlet對象的每次請求都會調(diào)用該對象的service() 方法,并傳遞給這個(gè)方法一個(gè)"請求"對象和一個(gè)"響應(yīng)"對象作為參數(shù)。"請求"對象提供有關(guān)請求的信息,而"響應(yīng)"對象提供了一個(gè)將響應(yīng)信息返回給瀏覽器的通信途徑。javax.servlet 軟件包中的相關(guān)類為ServletRequest和ServletResponse,而javax.servlet.http 軟件包中的相關(guān)類為HttpServletRequest 和 HttpServletResponse。Servlet 通過這些對象與服務(wù)器通信并最終與客戶機(jī)通信。Servlet 能通過調(diào)用"請求"對象的方法獲知客戶機(jī)環(huán)境、服務(wù)器環(huán)境的信息和所有由客戶機(jī)提供的信息;通過調(diào)用"響應(yīng)"對象的方法,Servlet可以向客戶機(jī)發(fā)送響應(yīng)。
HttpServlet中的service()方法默認(rèn)的服務(wù)功能是調(diào)用與 HTTP 請求的方法相應(yīng)的 do 功能。例如,如果 HTTP 請求方法為 GET,則默認(rèn)情況下就調(diào)用 doGet()。當(dāng)一個(gè)客戶通過HTML表單發(fā)出一個(gè)HTTP POST請求時(shí),doPost()方法被調(diào)用。與POST請求相關(guān)的參數(shù)作為一個(gè)單獨(dú)的HTTP 請求從瀏覽器發(fā)送到服務(wù)器。當(dāng)需要修改服務(wù)器端的數(shù)據(jù)時(shí),應(yīng)該使用doPost()方法。
Servlet的響應(yīng)可以是下列幾種類型:
·一個(gè)輸出流,瀏覽器根據(jù)它的內(nèi)容類型(如text/HTML)進(jìn)行解釋。
·一個(gè)HTTP錯(cuò)誤響應(yīng),重定向到另一個(gè)URL、Servlet和JSP。
destroy() 方法
destroy() 方法僅執(zhí)行一次,即在服務(wù)器停止且卸載Servlet 時(shí)執(zhí)行該方法。當(dāng)服務(wù)器卸載 Servlet 時(shí),將在所有 service() 方法調(diào)用完成后,或在指定的時(shí)間間隔過后調(diào)用 destroy() 方法。一個(gè)Servlet 在運(yùn)行service() 方法時(shí)可能會產(chǎn)生其他的線程,因此在調(diào)用 destroy() 方法時(shí),必須確認(rèn)這些線程已終止或完成。
GetServletConfig()方法
GetServletConfig()方法返回一個(gè) ServletConfig 對象,該對象用來返回初始化參數(shù)和ServletContext。ServletContext 接口提供有關(guān)Servlet 的環(huán)境信息。
GetServletInfo()方法
GetServletInfo()方法是一個(gè)可選的方法,它提供有關(guān)Servlet 的信息,如作者、版本、版權(quán)。