1. 程式人生 > >WEB專案-Servlet(簡介、生命週期、訪問路徑、ServletContext物件、域物件)

WEB專案-Servlet(簡介、生命週期、訪問路徑、ServletContext物件、域物件)

Servlet簡介

什麼是Servlet:

- Servlet是一個介面,下面有5個方法

- Servlet有兩個實現類,GenericServlet和HttpServlet

Servlet的作用:

- Servlet是一個小型的Java程式,執行在伺服器端

- Servlet接收和響應從客戶端傳送過來的請求,使用的是HTTP協議

編寫一個Servlet程式

(1)編寫一個類,實現Servlet介面,重寫5個方法

(2)在web.xml中配置Servlet的配置檔案

  <!--  配置Servlet的資訊 -->
  <servlet>
  	<!-- 給Servlet指定名稱(值是任意的) -->
  	<servlet-name >ServletDemo1</servlet-name>
  	<!-- 配置Servlet類的類名加包名(Class.forName()) -->
  	<servlet-class>com.demo.ServletDemo1</servlet-class>
  </servlet>
  
  <!-- 配置訪問的路徑 -->
  <servlet-mapping>
  	<!-- 配置Servlet的名稱,servlet-mapping節點下的servlet-name和servlet節點下的servlet-name的值必須是相同的 -->
  	<servlet-name>ServletDemo1</servlet-name>
  	<!-- 配置Servlet的訪問路徑  http://localhost:8080/Servlet/demo1 -->
  	<url-pattern>/demo1</url-pattern>

(3)將專案新增到伺服器中,啟動伺服器,就可以訪問ServletDemo1

Servlet的生命週期

Servlet例項被Tomcat伺服器來建立,第一次訪問的時候建立(在記憶體有一個例項(單例模式)),立即呼叫init方法進行初始化的操作,使用service方法對外提供服務(有一個請求,例項開啟一個新執行緒,處理請求的內容),有一次請求,service就被呼叫一次。Tomcat伺服器關閉或者移除專案的時候,Servlet被銷燬,但是例項在銷燬之前會呼叫destroy方法進行一些銷燬操作(釋放一些資源),destory方法只調用一次。

Servlet的類之間的關係

Servlet介面

        |

GenericServlet(5個方法全部重寫了)

        |

HttpServlet(service方法重寫了)

開發Servlet程式:

(1)編寫一個類,繼承HttpServlet

(2)重寫兩個方法doGet()和doPost()

(3)在web.xml中配置Servlet的相關資訊

一般情況下,doGet()和doPost()方法中的邏輯都是相同的,可以互相呼叫,簡化操作。

Servletp配置訪問路徑

web.xml中servlet標籤中的<url-pattern></url-pattern>標籤,中間加上訪問路徑

- 完全路徑匹配 

<url-pattern>/servlet/Servlet1</url-pattern>

訪問路徑:http://localhost:8080/Demo/servlet/Servlet1

- 目錄匹配

<url-pattern>/*</url-pattern>

訪問路徑:http://localhost:8080/Demo/xxx(任意)

- 副檔名匹配

<url-pattern>*.do或者*.action</url-pattern>

訪問路徑:

http://localhost:8080/Demo/xxx.do或者xxx.action

- 優先順序

完全路徑匹配>目錄匹配>副檔名路徑

ServletConfig物件

獲取關於配置了Servlet的配置資訊

                ServletConfig config = getServletConfig();
		String configName = config.getServletName();
		System.out.println(configName);

ServletContext物件

一個Web專案只有一個ServletContext物件,可以被Web專案中的所有Servlet所共享,通過ServletContext來傳遞資料

Tomcat伺服器一啟動,會為每一個Web專案建立一個ServletContext物件,伺服器關閉的時候ServletContext物件就銷燬了

- 獲取ServletContext物件

-- 通過ServletConfig物件獲取 getServletContext()

-- 通過繼承GenericServlet類獲取 getServletContext()

域物件

- 域物件可以在多個Servlet中傳遞資料

- 可以向域物件存入資料

setAttribute("屬性名","屬性值");底層是Map集合,屬性名相同,屬性值不同會覆蓋。

- 可以從域物件中獲取資料

Object = getAttribute("屬性名稱");

- 從域物件中刪除屬性

removeAttribute("屬性名稱");

ServletContext的作用

(1)獲取全域性的初始化引數(和ServletConfig不同,ServletConfig只能獲取當前Servlet的初始化引數)

     String getInitParameter(String name) 
 
     Enumeration getInitParameterNames() 
 

配置全域性初始化引數

(2)實現資料的共享

- void setAttribute(String name, Object object)     設定屬性的值
- Object getAttribute(String name)                        獲取屬性的值
- void removeAttribute(String name)                     刪除屬性的值
- Enumeration getAttributeNames()                      獲取屬性的名稱們

(3)讀取資原始檔