1. 程式人生 > >【JAVAWEB學習筆記】13_servlet

【JAVAWEB學習筆記】13_servlet

eight 生命周期 sys blog source con 相對 對象創建 功能

JavaWeb核心之Servlet

教學導航

學習目標:

案例一、完成用戶登錄功能

案例二、記錄成功登錄系統的人次

一、Servlet簡介

1.什麽是Servlet

Servlet 運行在服務端的Java小程序,是sun公司提供一套規範(接口),用來處理客戶端請求、響應給瀏覽器的動態資源。但servlet的實質就是java代碼,通過java的API 動態的向客戶端輸出內容

servlet規範:包含三個技術點

1)servlet技術

2)filter技術---過濾器

3)listener技術---監聽器

2.Servlet快速入門

實現步驟:

1)創建類實現Servlet接口

2)覆蓋尚未實現的方法---service方法

3)在web.xml進行servlet的配置

但在實際開發中,我們不會直接去實現Servlet接口,因為那樣需要覆蓋的方法太多, 我們一般創建類繼承HttpServlet

實現步驟:

1)創建類繼承HttpServlet類

2)覆蓋doGet和doPost

3)在web.xml中進行servlet的配置

畫圖描述整個訪問過程:

技術分享

二、Servlet的API(生命周期)

(1)Servlet接口中的方法

1)init(ServletConfig config)

何時執行:servlet對象創建的時候執行

ServletConfig : 代表的是該servlet對象的配置信息

2)service(ServletRequest request,ServletResponse response)

何時執行:每次請求都會執行

ServletRequest :代表請求 認為ServletRequest 內部封裝的是http請求的信息

ServletResponse :代表響應 認為要封裝的是響應的信息

3)destroy()

何時執行:servlet銷毀的時候執行

(2)HttpServlet類的方法

1)init()

2)doGet(HttpServletRequest request,HttpServletResponse response)

3)doPost(HttpServletRequest request,HttpServletResponse response)

4)destroy()

(3)Servlet的生命周期(面試題)

1)Servlet何時創建

默認第一次訪問servlet時創建該對象

2)Servlet何時銷毀

服務器關閉servlet就銷毀了

3)每次訪問必然執行的方法

service(ServletRequest req, ServletResponse res)方法

問題:對XXXServlet進行了10次訪問,init(),destory(),service(),doGet(),doPost() 一共執行力多少次?request對象創建幾個?response創建幾個?

三、Servlet的配置

1.基本配置

技術分享

其中url-pattern的配置方式:

1)完全匹配 訪問的資源與配置的資源完全相同才能訪問到

技術分享

2)目錄匹配 格式:/虛擬的目錄../* *代表任意

技術分享

3)擴展名匹配 格式:*.擴展名

技術分享

註意:第二種與第三種不要混用 /aaa/bbb/*.abcd(錯誤的)

2.服務器啟動實例化Servlet配置

Servlet的何時創建:默認第一次訪問時創建

為什麽是默認?

當在servlet的配置時 加上一個配置 <load-on-startup> servlet對象在服務器啟動 時就創建

3.缺省Servlet

可以將url-pattern配置一個/,代表該servlet是缺省的servlet

什麽是缺省的servlet?

當你訪問資源地址所有的servlet都不匹配時 , 缺省的servlet負責處理

其實,web應用中所有的資源的響應都是servlet負責,包括靜態資源

4.歡迎頁面

技術分享

四、ServletContext對象

1.什麽是ServletContext對象

ServletContext代表是一個web應用的環境(上下文)對象,ServletContext對象 內部封裝是該web應用的信息,ServletContext對象一個web應用只有一個

問題:一個web應用有幾個servlet對象?----多個

ServletContext對象的生命周期?

創建:該web應用被加載(服務器啟動或發布web應用(前提,服務器啟動狀 態))

銷毀:web應用被卸載(服務器關閉,移除該web應用)

2.怎樣獲得ServletContext對象

1)ServletContext servletContext = config.getServletContext();

2)ServletContext servletContext = this.getServletContext();

3.ServletContext的作用

(1)獲得web應用全局的初始化參數

web.xml中配置初始化參數

技術分享

通過context對象獲得參數

技術分享

(2)獲得web應用中任何資源的絕對路徑(重要 重要 重要)

方法一:String path = context.getRealPath(相對於該web應用的相對地址);

方法二:

//在讀取src(classes) 下的資源是可以同類加載器----專門加載classes 下的文件的

//getResource() 參數是一個相對地址 相對classes

String path = ContextServlet.class.getClassLoader().getResource("c.txt").getPath();

System.out.println(path);

(3)ServletContext是一個域對象(重要 重要 重要)

什麽是域對象?什麽是域?

存儲數據的區域就是域對象

ServletContext域對象的作用範圍:整個web應(所有的web資源都可以隨意向 servletcontext域中存取數據,數據可以共享)

域對象的通用的方法:

setAtrribute(String name,Object obj);

getAttribute(String name);

removeAttribute(String name);

附圖:

servlet訪問過程

技術分享

servlet訪問過程2

技術分享

用戶登錄

技術分享

域對象

技術分享

【JAVAWEB學習筆記】13_servlet