av网站免费线看精品_国产做a爱视频免费不_深爱激情网开心五月天_伊人五月天在线视频网

 
Java Servlet API
發(fā)布時(shí)間:2005-03-17   瀏覽次數(shù):1234441
Java Servlet API 3. Java Servlet API: Java Servlet 開(kāi)發(fā)工具(JSDK)提供了多個(gè)軟件包,在編寫(xiě) Servlet 時(shí)需要用到這些軟件包。其中包括兩個(gè)用于所有 Servlet 的基本軟件包:javax.servlet 和 javax.servlet.http?蓮膕un公司的Web站點(diǎn)下載 Java Servlet 開(kāi)發(fā)工具。 下面主要介紹javax.servlet.http提供的HTTP Servlet應(yīng)用編程接口。 HTTP Servlet 使用一個(gè) HTML 表格來(lái)發(fā)送和接收數(shù)據(jù)。要?jiǎng)?chuàng)建一個(gè) HTTP Servlet,請(qǐng)擴(kuò)展 HttpServlet 類, 該類是用專門(mén)的方法來(lái)處理 HTML 表格的 GenericServlet 的一個(gè)子類。 HTML 表單是由 和 標(biāo)記定義的。表單中典型地包含輸入字段(如文本輸入字段、復(fù)選框、單選按鈕和選擇列表)和用于提交數(shù)據(jù)的按鈕。當(dāng)提交信息時(shí),它們還指定服務(wù)器應(yīng)執(zhí)行哪一個(gè)Servlet(或其它的程序)。 HttpServlet 類包含 init()、destroy()、service() 等方法。其中 init() 和 destroy() 方法是繼承的。 (1) init() 方法 在 Servlet 的生命期中,僅執(zhí)行一次 init() 方法。它是在服務(wù)器裝入 Servlet 時(shí)執(zhí)行的。 可以配置服務(wù)器,以在啟動(dòng)服務(wù)器或客戶機(jī)首次訪問(wèn) Servlet 時(shí)裝入 Servlet。 無(wú)論有多少客戶機(jī)訪問(wèn) Servlet,都不會(huì)重復(fù)執(zhí)行 init() 。 缺省的 init() 方法通常是符合要求的,但也可以用定制 init() 方法來(lái)覆蓋它,典型的是管理服務(wù)器端資源。 例如,可能編寫(xiě)一個(gè)定制 init() 來(lái)只用于一次裝入 GIF 圖像,改進(jìn) Servlet 返回 GIF 圖像和含有多個(gè)客戶機(jī)請(qǐng)求的性能。另一個(gè)示例是初始化數(shù)據(jù)庫(kù)連接。缺省的 init() 方法設(shè)置了 Servlet 的初始化參數(shù),并用它的 ServletConfig 對(duì)象參數(shù)來(lái)啟動(dòng)配置, 因此所有覆蓋 init() 方法的 Servlet 應(yīng)調(diào)用 super.init() 以確保仍然執(zhí)行這些任務(wù)。在調(diào)用 service() 方法之前,應(yīng)確保已完成了 init() 方法。 (2) service() 方法 service() 方法是 Servlet 的核心。每當(dāng)一個(gè)客戶請(qǐng)求一個(gè)HttpServlet 對(duì)象,該對(duì)象的service() 方法要被調(diào)用,而且傳遞給這個(gè)方法一個(gè)"請(qǐng)求"(ServletRequest)對(duì)象和一個(gè)"響應(yīng)"(ServletResponse)對(duì)象作為參數(shù)。 在 HttpServlet 中已存在 service() 方法。缺省的服務(wù)功能是調(diào)用與 HTTP 請(qǐng)求的方法相應(yīng)的 do 功能。例如, 如果 HTTP 請(qǐng)求方法為 GET,則缺省情況下調(diào)用 doGet() 。Servlet 應(yīng)該為 Servlet 支持的 HTTP 方法覆蓋 do 功能。因?yàn)?HttpServlet.service() 方法會(huì)檢查請(qǐng)求方法是否調(diào)用了適當(dāng)?shù)奶幚矸椒,不必要覆蓋 service() 方法。只需覆蓋相應(yīng)的 do 方法可以了。 = 當(dāng)一個(gè)客戶通過(guò)HTML 表單發(fā)出一個(gè)HTTP POST請(qǐng)求時(shí),doPost()方法被調(diào)用。與POST請(qǐng)求相關(guān)的參數(shù)作為一個(gè)單獨(dú)的HTTP 請(qǐng)求從瀏覽器發(fā)送到服務(wù)器。當(dāng)需要修改服務(wù)器端的數(shù)據(jù)時(shí),應(yīng)該使用doPost()方法。 = 當(dāng)一個(gè)客戶通過(guò)HTML 表單發(fā)出一個(gè)HTTP GET請(qǐng)求或直接請(qǐng)求一個(gè)URL時(shí),doGet()方法被調(diào)用。與GET請(qǐng)求相關(guān)的參數(shù)添加到URL的后面,并與這個(gè)請(qǐng)求一起發(fā)送。當(dāng)不會(huì)修改服務(wù)器端的數(shù)據(jù)時(shí),應(yīng)該使用doGet()方法。 Servlet的響應(yīng)可以是下列幾種類型: 一個(gè)輸出流,瀏覽器根據(jù)它的內(nèi)容類型(如text/HTML)進(jìn)行解釋。 一個(gè)HTTP錯(cuò)誤響應(yīng), 重定向到另一個(gè)URL、servlet、JSP。 (3) destroy() 方法 destroy() 方法僅執(zhí)行一次,即在服務(wù)器停止且卸裝Servlet 時(shí)執(zhí)行該方法。典型的,將 Servlet 作為服務(wù)器進(jìn)程的一部分來(lái)關(guān)閉。缺省的 destroy() 方法通常是符合要求的,但也可以覆蓋它,典型的是管理服務(wù)器端資源。例如,如果 Servlet 在運(yùn)行時(shí)會(huì)累計(jì)統(tǒng)計(jì)數(shù)據(jù),則可以編寫(xiě)一個(gè) destroy() 方法,該方法用于在未裝入 Servlet 時(shí)將統(tǒng)計(jì)數(shù)字保存在文件中。另一個(gè)示例是關(guān)閉數(shù)據(jù)庫(kù)連接。 當(dāng)服務(wù)器卸裝 Servlet 時(shí),將在所有 service() 方法調(diào)用完成后,或在指定的時(shí)間間隔過(guò)后調(diào)用 destroy() 方法。一個(gè)Servlet 在運(yùn)行service() 方法時(shí)可能會(huì)產(chǎn)生其它的線程,因此請(qǐng)確認(rèn)在調(diào)用 destroy() 方法時(shí),這些線程已終止或完成。 (4) GetServletConfig()方法 GetServletConfig()方法返回一個(gè) ServletConfig 對(duì)象,該對(duì)象用來(lái)返回初始化參數(shù)和ServletContext。ServletContext 接口提供有關(guān)servlet 的環(huán)境信息。 (5) GetServletInfo()方法 GetServletInfo()方法是一個(gè)可選的方法,它提供有關(guān)servlet 的信息,如作者、版本、版權(quán)。 當(dāng)服務(wù)器調(diào)用sevlet 的Service()、doGet()和doPost()這三個(gè)方法時(shí),均需要 "請(qǐng)求"和"響應(yīng)"對(duì)象作為參數(shù)。"請(qǐng)求"對(duì)象提供有關(guān)請(qǐng)求的信息,而"響應(yīng)"對(duì)象提供了一個(gè)將響應(yīng)信息返回給瀏覽器的一個(gè)通信途徑。javax.servlet 軟件包中的相關(guān)類為ServletResponse和ServletRequest,而javax.servlet.http 軟件包中的相關(guān)類為HttpServletRequest 和 HttpServletResponse。 Servlet 通過(guò)這些對(duì)象與服務(wù)器通信并最終與客戶機(jī)通信。Servlet 能通過(guò)調(diào)用"請(qǐng)求"對(duì)象的方法獲知客戶機(jī)環(huán)境,服務(wù)器環(huán)境的信息和所有由客戶機(jī)提供的信息。Servlet 可以調(diào)用"響應(yīng)"對(duì)象的方法發(fā)送響應(yīng),該響應(yīng)是準(zhǔn)備發(fā)回客戶機(jī)的。 來(lái)源:http://edu.chinaz.com
立即預(yù)約