亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

servlet基礎

系統 2000 0
概述
  Servlet是一種服務器端的Java應用程序,具有獨立于平臺和協議的特性,可以生成動態的Web頁面。 它擔當客戶請求(Web瀏覽器或其他HTTP客戶程序)與服務器響應(HTTP服務器上的數據庫或應用程序)的中間層。
  Servlet是位于Web 服務器內部的服務器端的Java應用程序,與傳統的從命令行啟動的Java應用程序不同,Servlet由Web服務器進行加載,該Web服務器必須包含支持Servlet的Java虛擬機。
[編輯本段]
servlet由來
  servlet是在服務器上運行的小程序。這個詞是在Java applet的環境中創造的,Java applet是一種當作單獨文件跟網頁一起發送的小程序,它通常用于在客戶端運行,結果得到為用戶進行運算或者根據用戶互作用定位圖形等服務。 
  服務器上需要一些程序,常常是根據用戶輸入訪問數據庫的程序。這些通常是使用公共網關接口(CGI)應用程序完成的。然而,在服務器上運行Java,這種程序可使用Java編程語言實現。在通信量大的服務器上,Java servlet的優點在于它們的執行速度更快于CGI程序。各個用戶請求被激活成單個程序中的一個線程,而創建單獨的程序,這意味著各個請求的系統開銷比較小。
[編輯本段]
servlet的工作模式
  客戶端發送請求至服務器
  服務器啟動并調用Servlet,Servlet根據客戶端請求生成響應內容并將其傳給服務器
  服務器將響應返回客戶端
[編輯本段]
[1]Java Servlet 與 Applet 的比較
  相似之處:
  * 它們不是獨立的應用程序,沒有main()方法。
  * 它們不是由用戶或程序員調用,而是由另外一個應用程序(容器)調用。
  * 它們都有一個生存周期,包含init()和destroy()方法。
  不同之處:
  * Applet具有很好的圖形界面(AWT),與瀏覽器一起,在客戶端運行。
  * Servlet 則沒有圖形界面,運行在服務器端。
[編輯本段]
與傳統CGI的比較
  Java Servlet 與 CGI(Common Gateway Interface) 的比較:
  與傳統的CGI和許多其他類似CGI的技術相比,Java Servlet具有更高的效率,更容易使用,功能更強大,具有更好的可移植性,更節省投資。在未來的技術發展過程中,Servlet有可能徹底取代CGI。
  在傳統的CGI中,每個請求都要啟動一個新的進程,如果CGI程序本身的執行時間較短,啟動進程所需要的開銷很可能反而超過實際執行時間。而在Servlet中,每個請求由一個輕量級的Java線程處理(而不是重量級的操作系統進程)。
  在傳統CGI中,如果有N個并發的對同一CGI程序的請求,則該CGI程序的代碼在內存中重復裝載了N次;而對于Servlet,處理請求的是N個線程,只需要一份Servlet類代碼。在性能優化方面,Servlet也比CGI有著更多的選擇。
   * 方便  
  Servlet提供了大量的實用工具例程,例如自動地解析和解碼HTML表單數據、讀取和設置HTTP頭、處理Cookie、跟蹤會話狀態等。
   * 功能強大
  在Servlet中,許多使用傳統CGI程序很難完成的任務都可以輕松地完成。例如,Servlet能夠直接和Web服務器交互,而普通的CGI程序不能。Servlet還能夠在各個程序之間共享數據,使得數據庫連接池之類的功能很容易實現。
   * 可移植性好
  Servlet用Java編寫,Servlet API具有完善的標準。因此,為IPlanet Enterprise Server寫的Servlet無需任何實質上的改動即可移植到Apache、Microsoft IIS或者WebStar。幾乎所有的主流服務器都直接或通過插件支持Servlet。
   * 節省投資  
  不僅有許多廉價甚至免費的Web服務器可供個人或小規模網站使用,而且對于現有的服務器,如果它不支持Servlet的話,要加上這部分功能也往往是免費的(或只需要極少的投資)。
[編輯本段]
Java Servlet 與 JSP 的比較
  JavaServer Pages(JSP) 是一種實現普通靜態HTML和動態HTML混合編碼的技術,JSP并沒有增加任何本質上不能用Servlet實現的功能。但是,在JSP中編寫靜態 HTML更加方便,不必再用println語句來輸出每一行HTML代碼。更重要的是,借助內容和外觀的分離,頁面制作中不同性質的任務可以方便地分開:比如,由頁面設計者進行HTML設計,同時留出供Servlet程序員插入動態內容的空間。
[編輯本段]
HTTPServlet應用編程接口
  HTTP Servlet 使用一個 HTML 表格來發送和接收數據。要創建一個 HTTP Servlet,請擴展 HttpServlet 類, 該類是用專門的方法來處理 HTML 表格的 GenericServlet 的一個子類。 HTML 表單是由 <FORM> 和 </FORM> 標記定義的。表單中典型地包含輸入字段(如文本輸入字段、復選框、單選按鈕和選擇列表)和用于提交數據的按鈕。當提交信息時,它們還指定服務器應執行哪一個Servlet(或其它的程序)。 HttpServlet 類包含 init()、destroy()、service() 等方法。其中 init() 和 destroy() 方法是繼承的。
   (1) init() 方法
  在 Servlet 的生命期中,僅執行一次 init() 方法。它是在服務器裝入 Servlet 時執行的。 可以配置服務器,以在啟動服務器或客戶機首次訪問 Servlet 時裝入 Servlet。 無論有多少客戶機訪問 Servlet,都不會重復執行 init() 。
  缺省的 init() 方法通常是符合要求的,但也可以用定制 init() 方法來覆蓋它,典型的是管理服務器端資源。 例如,可能編寫一個定制 init() 來只用于一次裝入 GIF 圖像,改進 Servlet 返回 GIF 圖像和含有多個客戶機請求的性能。另一個示例是初始化數據庫連接。缺省的 init() 方法設置了 Servlet 的初始化參數,并用它的 ServletConfig 對象參數來啟動配置, 因此所有覆蓋 init() 方法的 Servlet 應調用 super.init() 以確保仍然執行這些任務。在調用 service() 方法之前,應確保已完成了 init() 方法。
   (2) service() 方法
  service() 方法是 Servlet 的核心。每當一個客戶請求一個HttpServlet 對象,該對象的service() 方法就要被調用,而且傳遞給這個方法一個"請求"(ServletRequest)對象和一個"響應"(ServletResponse)對象作為參數。在 HttpServlet 中已存在 service() 方法。缺省的服務功能是調用與 HTTP 請求的方法相應的 do 功能。例如, 如果 HTTP 請求方法為 GET,則缺省情況下就調用 doGet() 。Servlet 應該為 Servlet 支持的 HTTP 方法覆蓋 do 功能。因為 HttpServlet.service() 方法會檢查請求方法是否調用了適當的處理方法,不必要覆蓋 service() 方法。只需覆蓋相應的 do 方法就可以了。
  Servlet的響應可以是下列幾種類型:
  一個輸出流,瀏覽器根據它的內容類型(如text/HTML)進行解釋。
  一個HTTP錯誤響應, 重定向到另一個URL、servlet、JSP。
  (3)doGet()方法
  當一個客戶通過HTML 表單發出一個HTTP GET請求或直接請求一個URL時,doGet()方法被調用。與GET請求相關的參數添加到URL的后面,并與這個請求一起發送。當不會修改服務器端的數據時,應該使用doGet()方法。
  (4)doPost()方法
  當一個客戶通過HTML 表單發出一個HTTP POST請求時,doPost()方法被調用。與POST請求相關的參數作為一個單獨的HTTP 請求從瀏覽器發送到服務器。當需要修改服務器端的數據時,應該使用doPost()方法。
   (5) destroy() 方法
  destroy() 方法僅執行一次,即在服務器停止且卸裝Servlet 時執行該方法。典型的,將 Servlet 作為服務器進程的一部分來關閉。缺省的 destroy() 方法通常是符合要求的,但也可以覆蓋它,典型的是管理服務器端資源。例如,如果 Servlet 在運行時會累計統計數據,則可以編寫一個 destroy() 方法,該方法用于在未裝入 Servlet 時將統計數字保存在文件中。另一個示例是關閉數據庫連接。
  當服務器卸裝 Servlet 時,將在所有 service() 方法調用完成后,或在指定的時間間隔過后調用 destroy() 方法。一個Servlet 在運行service() 方法時可能會產生其它的線程,因此請確認在調用 destroy() 方法時,這些線程已終止或完成。
   (6) GetServletConfig()方法
  GetServletConfig()方法返回一個 ServletConfig 對象,該對象用來返回初始化參數和ServletContext。ServletContext 接口提供有關servlet 的環境信息。
   (7) GetServletInfo()方法
  GetServletInfo()方法是一個可選的方法,它提供有關servlet 的信息,如作者、版本、版權。
  當服務器調用sevlet 的Service()、doGet()和doPost()這三個方法時,均需要 "請求"和"響應"對象作為參數。"請求"對象提供有關請求的信息,而"響應"對象提供了一個將響應信息返回給瀏覽器的一個通信途徑。
  javax.servlet 軟件包中的相關類為ServletResponse和ServletRequest,而javax.servlet.http 軟件包中的相關類為HttpServletRequest 和 HttpServletResponse。Servlet 通過這些對象與服務器通信并最終與客戶機通信。Servlet 能通過調用"請求"對象的方法獲知客戶機環境,服務器環境的信息和所有由客戶機提供的信息。Servlet 可以調用"響應"對象的方法發送響應,該響應是準備發回客戶機的。

servlet基礎


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 女人zzzooooxxxx| 国产成人毛片亚洲精品不卡 | 精品资源在线 | 劲爆激情欧美毛片 | 国产福利91精品一区二区三区 | 午夜骚 | 伊人久久一本 | 黄页网址大全免费观看美女 | 久久网免费视频 | 一级aaaaaa毛片免费 | 国产精品美女自在线观看免费 | 色狗综合| 97在线视频99播放 | 国产成人福利夜色影视 | 九九热精品在线视频 | 亚洲一区在线免费 | 激情五月婷婷久久 | 日韩欧美第一页 | 亚洲狠狠婷婷综合久久久久网站 | 久久不卡| 手机看片日韩高清国产欧美 | 私人影院在线免费观看 | 亚洲成年人免费网站 | 久久国产网站 | 亚洲激情在线 | 欧美爱爱片| 亚洲欧美国产日产综合不卡 | 男女性高爱麻豆 | 免费欧洲毛片a级视频老妇女 | 国产精品亚洲专区在线观看 | 久久天天躁狠狠躁夜夜爽 | 不一样的天空在线高清观看 | 天天靠天天擦天天摸 | 日韩高清在线二区 | 亚欧洲精品在线视频免费观看 | 综合一个色 | 一区二区美女视频 | 久久久网站 | 国产亚洲精品一区二区久久 | 天天久久综合 | 久久乱码精品区中文字幕 |