初學Java Web——Servlet(一)

1. Servlet

1.1 靜態網頁和動態網頁

如果瀏覽器在不同時刻訪問Web服務器所獲得的頁面內容(源文件)可以發生變化,那麼這個頁面就稱之爲動態網頁。我們參考以下代碼:

<html>
 <head>
  <script type="text/javascript">
    document.write(new Date());
  </script>
 </head>
 <body>
 </body>
</html>

雖然每隔一段時間刷新網頁會看見時間的改變,但是網頁的源文件是沒有變化的,這種情況就不屬於動態網頁。

1.2 Servlet簡介

一個Servlet程序就是一個實現特殊接口的java類,它由支持Servlet的Web服務器調用和運行。Servlet程序負責處理它所對應的一個或多個訪問請求,並用於接收客戶端發出的訪問請求信息和產生的響應內容

我們可以在Servlet中完成如下功能: 1. 獲取瀏覽器Html頁面中的Form表單,並通過一種方式提交到服務器 2. 創建對瀏覽器的響應消息內容 3. 訪問服務器的文件系統 4. 連接數據庫 5. 調用其他Java類 **開發Servlet涉及的相關知識:** 1. 應該具備良好的Java編程基礎 2. Servlet是基於Web站點的技術,應該對於Xml、Http協議以及Html、Css和Js有所瞭解 3. 應該具備數據庫系統的相關知識,能對數據庫進行基本的管理和操作是必要的

#2. Servlet開發 ##2.1 Servlet的第一個例子 上文已經提到 **Servlet是一個實現特殊接口的Java類**我們可以在API文檔中發現
|--java.lang.Object
   |--javax.servlet.GenericServlet
      |--javax.servlet.http.HttpServlet

HttpServlet是在GenericServlet類的基礎上進行了一些針對Http的擴充。顯然,一個類只要繼承了GenericServlet或者HttpServlet,它就是一個Servlet。爲了充分利用Http協議的功能,在一般情況下我們都應該繼承HttpServlet。

**Servlet開發步驟:** 1. 新建Web工程MyJavaWeb 2. 編寫類繼承HttpServlet 3. 配置web.xml文件

package com.xpeng_V.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class MyServlet extends HttpServlet {
    //doGet方法
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        response.getWriter().write("this is my first Servlet");
    }

}

配置web.xml文件

<servlet>
    <servlet-name>MyServlet</servlet-name>
    <servlet-class>com.xpeng_V.servlet.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>MyServlet</servlet-name>
    <url-pattern>/MyServlet</url-pattern>
</servlet-mapping>

註冊Servlet:
其中,指定了MyServlet.java的註冊名是MyServlet,servlet的註冊名可以是任意的,但是不能和其他的servlet重複。指定了當前servlet的完整路徑
映射Servlet:
與servlet的註冊名相同,是servlet對外的訪問路徑
同一個Servlet可以被映射到多個URL上,在上可以使用“”通配符。例如,“.do”表示匹配所有以“.do”結尾的URL,另一種“/*”表示匹配當前路徑下所有的URL。

將工程發佈到Tomcat並重啓服務器,在瀏覽器地址欄中輸入http://127.0.0.1:8080/MyJavaWeb/MyServlet

**缺省Servlet** 如果某一個Servlet的映射路徑僅僅爲“/”,那麼這個Servlet就是當前Web應用的缺省Servlet。凡是web.xml文件中不能匹配的元素,就都交給缺省Servlet處理。訪問Tomcat服務器中的靜態頁面和圖片時,實際上訪問的就是缺省Servlet,我們將web.xml中的缺省Servlet註釋,就會發現瀏覽器的靜態頁面無法正常顯示了。 Tomcat服務器中的缺省Servlet:

    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

2.2 Servlet生命週期

Servlet的生命週期主要的方法有構造方法、init、service、destroy:

public class LifeServlet extends HttpServlet {

    public LifeServlet() {
        System.out.println("Servlet被創建...");
    }

    @Override
    public void init(ServletConfig config) throws ServletException {
        System.out.println("init初始化方法...");
    }

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        System.out.println("service方法被調用");
    }

    @Override
    public void destroy() {
        System.out.println("destroy被調用,Servlet被銷燬");
    }
}

當第一次從瀏覽器訪問時,控制檯輸出如下:

Servlet被創建...
init初始化方法...
service方法被調用

每一次發出請求都只會調用service方法,當服務器關閉或者重新發布web應用時會調用destroy方法。

構造方法:創建Servlet對象時被調用 Servlet構造方法只調用一次,所以在Tomcat服務器中Servlet是單例的
init:創建完Servlet對象後被調用
service:每次發出請求時被調用
destroy:停止Web服務器或者重新發布Web應用時會銷燬Servlet對象

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