servlet基礎(chǔ)知識_動力節(jié)點Java學(xué)院整理-創(chuàng)新互聯(lián)

Servlet是一門專門用于開發(fā)動態(tài)web資源的技術(shù),Sun公司在其API中提供了一個Servlet接口(當然,我們不會去直接實現(xiàn)這個接口,而是去繼承其實現(xiàn)類會更好),因此,狹義的Servlet是指這個接口,廣義的Servlet是指任何實現(xiàn)了這個Servlet接口的類。 使用Servlet開發(fā)一個動態(tài)web資源,其實就是開發(fā)一個Java程序向瀏覽器輸出數(shù)據(jù)。

為金平等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及金平網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、金平網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!

Servlet其實就是一個運行在服務(wù)器上得Java程序,Servlet是J2EE十三門技術(shù)中的一種,因此我們不能去看J2SE的API文檔,如果是初學(xué)者,最好能看專門Servlet的API文檔。我們來看Servlet的文檔介紹:

從這個對Servlet接口的介紹就可以看出,如果要實現(xiàn)Servlet接口,就要實現(xiàn)其所有的方法,Servlet程序是運行在web服務(wù)器上得,用來接收和響應(yīng)從客戶端發(fā)來的請求。當然就像我之前說的,如果自己寫一個類來實現(xiàn)Servlet接口,那么就要復(fù)寫Servlet所有的方法,但是我們可以繼承其實現(xiàn)類,例如GenericServlet類或者HttpServlet類,這樣只需要復(fù)寫我們想復(fù)寫的方法即可。

Servlet中的方法包括了其生命周期方法和非生命周期的方法。在Servlet中,生命周期方法包括:init(ServletConfig config)、destroy()、service(ServletRequest req , ServletResponse res),也就是Servlet初始化、對請求進行響應(yīng)服務(wù),和Servlet的銷毀。

除了Servlet的生命周期方法,還有非生命周期方法,如getServletConfig()和getServletInfo()方法,這兩個方法可以獲得有關(guān)該Servlet的一些信息。

  Servlet生命周期是指Servlet實例從創(chuàng)建到響應(yīng)客戶端請求,最后銷毀的過程。具體過程如下:

  1、 Server創(chuàng)建一個Servlet的實例,也就是調(diào)用了init()方法;

  2、一個客戶端的請求(對象)到達Server;

  3、 Server將請求發(fā)送給Servlet;

  4、Servlet生成對請求的響應(yīng)(對象);

  5、Server激活Servlet的service()方法,傳遞請求對象和響應(yīng)對象作為參數(shù);

  6、 Service()方法獲得請求對象的信息,處理請求,訪問資源,獲得所需的信息;

  7、Service()方法使用響應(yīng)對象的方法,將響應(yīng)傳回Server,最終到達客戶端。Service方法還可能激活其他方法處理請求,如doGet()或者doPost()方法;

  8、對于更多的客戶端請求,Server創(chuàng)建新的請求和響應(yīng)對象,仍然激活此Servlet的service方法,將這兩個對象作為參數(shù)傳遞給它,無需再調(diào)用init()方法。一般Servlet只初始化一次。當Server不在需要Servlet時(一般是Server關(guān)閉),Server調(diào)用Servlet的destroy()方法銷毀Servlet。

  從以上可以看出,Servlet生命周期上得三個方法是由服務(wù)器調(diào)用,可以說是在Servlet存在開始到銷毀這個過程中的某個時刻(如果有事件觸發(fā))則必定會被執(zhí)行的方法稱為生命周期方法。

  因此,在Servlet中最重要的就是service()方法,要想從服務(wù)器端將資源傳回客戶端或者向客戶端發(fā)送數(shù)據(jù),都將在service()方法中進行。

  從service(ServletTequest req , ServletResponse res)方法來看,不僅service()方法是由服務(wù)器調(diào)用執(zhí)行,連ServletTequest請求對象和ServletResponse響應(yīng)對象也是由服務(wù)器提供,如果我們要寫一個簡單的數(shù)據(jù)給客戶端,就可以在service()方法中操作ServletResponse響應(yīng)對象:

  作為入門,那么我們先不用開發(fā)工具IDE來寫Servlet,而是先手工編寫,這樣有助于理解Servlet的底層原理。在Tomcat的【webapps】目錄下建立我的web應(yīng)用,web應(yīng)用所在目錄為【myservlet】,我們先在【myservlet】目錄下創(chuàng)建【W(wǎng)EB-INF】,并且再在【W(wǎng)EB-INF】中創(chuàng)建【classes】目錄,【lib目錄】和web.xml文件,在【classes】目錄中,建立我的Java程序:FirstServlet.java

servlet基礎(chǔ)知識_動力節(jié)點Java學(xué)院整理

因為自己編寫的Servlet是由服務(wù)器調(diào)用,因此我們所創(chuàng)建的Servlet實現(xiàn)類一定要是公共的,開始說了,我們沒必要實現(xiàn)Servlet的全部方法,因此我們向客戶端傳數(shù)據(jù)只需要復(fù)寫service()方法即可,那么我們只需要繼承Servlet的實現(xiàn)類,接著取得相應(yīng)對象ServletResponse的輸出流ServletOutputStream就可以向客戶端輸出數(shù)據(jù)了,同時因為輸出是字節(jié)流,所以需要將字符轉(zhuǎn)換成字節(jié)數(shù)組,再手動寫入自定義包名和要導(dǎo)入的Java包:

package fjdingsd.web;

import java.io.*;
import javax.servlet.*;

public class FirstServlet extends GenericServlet{
  public void service(ServletRequest req, ServletResponse res) throws ServletException, java.io.IOException
  {
   OutputStream out = res.getOutputStream();
   out.write("Hello Servlet".getBytes());
  }
}

分享文章:servlet基礎(chǔ)知識_動力節(jié)點Java學(xué)院整理-創(chuàng)新互聯(lián)
網(wǎng)頁鏈接:http://muchs.cn/article4/pgeoe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、移動網(wǎng)站建設(shè)、自適應(yīng)網(wǎng)站、品牌網(wǎng)站建設(shè)、品牌網(wǎng)站設(shè)計外貿(mào)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計