JavaWeb學習總結(二)之Servlet開發(一)

一、Servlet簡介

  Servlet是sun公司提供的一門用於開發動態web資源的技術。
  Sun公司在其API中提供了一個servlet接口,用戶若想用發一個動態web資源(即開發一個Java程序向瀏覽器輸出數據),需要完成以下2個步驟:
  1、編寫一個Java類,實現servlet接口。
  2、把開發好的Java類部署到web服務器中。
  按照一種約定俗成的稱呼習慣,通常我們也把實現了servlet接口的java程序,稱之爲Servlet


二、Servlet的運行過程

Servlet程序是由WEB服務器調用,web服務器收到客戶端的Servlet訪問請求後:
  ①Web服務器首先檢查是否已經裝載並創建了該Servlet的實例對象。如果是,則直接執行第④步,否則,執行第②步。
  ②裝載並創建該Servlet的一個實例對象。
  ③調用Servlet實例對象的init()方法。
  ④創建一個用於封裝HTTP請求消息的HttpServletRequest對象和一個代表HTTP響應消息的HttpServletResponse對象,然後調用Servlet的service()方法並將請求和響應對象作爲參數傳遞進去。
  ⑤WEB應用程序被停止或重新啓動之前,Servlet引擎將卸載Servlet,並在卸載之前調用Servlet的destroy()方法。


三、在MyEclipse中開發Servlet

     在myeclipse中新建一個web project工程,

     1)選中demo.cha.servlet.包,右鍵→New→Servlet;

     2)

     3)

     4)圈圈中是在web.xml文件中配置Servlet名字和和訪問url參數,由myeclipse自動生成

     5)創建好後,demoServlet代碼如下:

          

     6)文件中也多了<servlet></servlet>和<servlet-mapping></servlet-mapping>兩對標籤,這兩對標籤是配置demoServlet的

        

        

     7)測試訪問下:

       


四、Servlet開發注意細節

4.1、Servlet訪問URL映射配置

  由於客戶端是通過URL地址訪問web服務器中的資源,所以Servlet程序若想被外界訪問,必須把servlet程序映射到一個URL地址上,這個工作在web.xml文件中使用<servlet>元素和<servlet-mapping>元素完成。
  <servlet>元素用於註冊Servlet,它包含有兩個主要的子元素:<servlet-name>和<servlet-class>,分別用於設置Servlet的註冊名稱和Servlet的完整類名。
一個<servlet-mapping>元素用於映射一個已註冊的Servlet的一個對外訪問路徑,它包含有兩個子元素:<servlet-name>和<url-pattern>,分別用於指定Servlet的註冊名稱和Servlet的對外訪問路徑。

        同一個Servlet可以被映射到多個URL上,即多個<servlet-mapping>元素的<servlet-name>子元素的設置值可以是同一個Servlet的註冊名。

  <servlet>
    <servlet-name>demoServlet</servlet-name>
    <servlet-class>demo.cha.servlet.demoServlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>demoServlet</servlet-name>
    <url-pattern>/servlet/demoServlet</url-pattern>
  </servlet-mapping>
 <servlet-mapping>
    <servlet-name>demoServlet</servlet-name>
    <url-pattern>/1.htm</url-pattern>
  </servlet-mapping>
   <servlet-mapping>
    <servlet-name>demoServlet</servlet-name>
    <url-pattern>/2.jsp</url-pattern>
  </servlet-mapping>

       通過上面的配置,當我們想訪問名稱是ServletDemo1的Servlet,可以使用如下的幾個地址去訪問:

  http://localhost:8888/z-test2/servlet/demoServlet

  http://localhost:8888/z-test2/1.htm

  http://localhost:8888/z-test2/2.jsp


4.2、Servlet訪問URL使用*通配符映射  

在Servlet映射到的URL中也可以使用*通配符,但是只能有兩種固定的格式:一種格式是"*.擴展名",另一種格式是以正斜槓(/)開頭並以"/*"結尾。例如:

<servlet>
   <servlet-name>demoServlet</servlet-name>
   <servlet-class>demo.cha.servlet.demoServlet</servlet-class>
</servlet>

<servlet-mapping>
   <servlet-name>demoServlet</servlet-name>
   <url-pattern>/*</url-pattern>
</servlet-mapping>

    測試下:

   

4.3、Servlet與普通Java類的區別  

  Servlet是一個供其他Java程序(Servlet引擎)調用的Java類,它不能獨立運行,它的運行完全由Servlet引擎來控制和調度。
  針對客戶端的多次Servlet請求,通常情況下,服務器只會創建一個Servlet實例對象,也就是說Servlet實例對象一旦創建,它就會駐留在內存中,爲後續的其它請求服務,直至web容器退出,servlet實例對象纔會銷燬。
  在Servlet的整個生命週期內,Servlet的init方法只被調用一次。而對一個Servlet的每次訪問請求都導致Servlet引擎調用一次servlet的service方法。對於每次訪問請求,Servlet引擎都會創建一個新的HttpServletRequest請求對象和一個新的HttpServletResponse響應對象,然後將這兩個對象作爲參數傳遞給它調用的Servlet的service()方法,service方法再根據請求方式分別調用doXXX方法。

  如果在<servlet>元素中配置了一個<load-on-startup>元素,那麼WEB應用程序在啓動時,就會裝載並創建Servlet的實例對象、以及調用Servlet實例對象的init()方法。
    舉例:
    <servlet>
        <servlet-name>invoker</servlet-name>
        <servlet-class>
            org.apache.catalina.servlets.InvokerServlet
        </servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

 用途:爲web應用寫一個InitServlet,這個servlet配置爲啓動時裝載,爲整個web應用創建必要的數據庫表和數據。

<servlet>
    <servlet-name>demoServlet</servlet-name>
    <servlet-class>demo.cha.servlet.demoServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

5.原博文地址:http://www.cnblogs.com/xdp-gacl/p/3760336.html 



       

         

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章