Servlet教程

01_Servlet的概述&入門案例

Servlet
是Java所提供的一門用於開發動態WEB資源的技術,也是JavaEE的規範之一
開發步驟
創建一個WEB項目
在WEB項目中創建一個類,讓該類去實現Servlet接口(繼承Servlet接口的實現類)
在web.xml文件中進行相關的配置
<servlet>
<servlet-name>DemoServlet</servlet-name>
<servlet-class>com.heima.servlet.DemoServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DemoServlet</servlet-name>
<url-pattern>/DemoServlet</url-pattern>
</servlet-mapping>
發佈WEB項目至WEB服務器

02_Servlet的執行過程


03_Servlet的體系結構



04_使用Eclipse創建Servlet

05_Servlet的生命週期

出生
第一次訪問Servlet時由WEB服務器創建對象
第一次訪問Servlet時進行初始化,並調用方法init()
活着
每次訪問Servlet都會調用他的service方法
死亡
當WEB服務器關閉的時候會銷燬Servlet的對象
當WEB服務器關閉的時候會調用destory()方法

06_Servlet的線程安全問題

如果有多個客戶端併發的訪問同一個Servlet,WEB服務器會爲每一個客戶端的請求創建一個線程,在線程中調用Servlet的service方法,
如果多個線程併發的訪問同樣的數據,那這個時候就有可能會出現線程的安全問題
解決方案
把有可能會出現問題的代碼扔到同步代碼塊裏面
讓Servlet去實現一個接口,SingleThreadModel
儘量減少使用成員變量
servlet-mapping
除了可以配置資源名稱,也可以進行路徑的配置,而且路徑可以有多層
同一個Servlet我們可以配置多個映射路徑
配置Servlet映射路徑時可以使用通配符(*),使用通配符只有兩種格式
格式1
*.擴展名,比如*.do
不能以正斜槓開頭
格式2
可以使用正斜槓開頭,也需要使用"/*"來結尾
不能在*後面加上擴展名
load-on-startup
tomcat啓動的時候直接創建Servlet的對象

08_ServletConfig的概述和測試

ServletConfig對象
在Servlet的配置文件中,可以使用init-param標籤可以爲Servlet配置一些初始化參數,
可以使用ServletConfig對象來獲取這些初始化參數
ServletConfig對象的獲取
一,通過init方法來獲取,他會作爲參數傳遞進來
二,調用方法 getServletconfig來獲取

09_ServletContext概述&獲取WEB應用的初始化參

WEB服務器啓動的時候,會爲每一個WEB應用程序創建一個對應的ServletContext對象,他代表了當前的WEB應用,也稱之爲是WEB應用的上下文
作用
獲取WEB應用的初始化參數

10_ServletContext實現數據的共享

作用
讓多個Servlet實現數據的共享,域對象
域對象:有範圍的Map,讓數據在整個應用所共享

11_ServletContext的其他功能

作用
獲取當前WEB應用的絕對路徑
轉發
將請求轉發給另外一個WEB資源,可以是Servlet,JSP,HTML
只能轉發到內部資源
共享請求和響應對象
地址欄中的路徑不會發生變化
在轉發之後響應的內容會被取消
包含
用於在響應中包含其他的WEB資源
只能轉發到內部資源
共享請求和響應對象
地址欄中的路徑不會發生變化
包含前後可以繼續的響應其他內容

12_JavaWeb開發中常用的路徑

絕對路徑
物理路徑,在磁盤中的路徑,以盤符開頭
比如D:\java\apache-tomcat-7.0.65\webapps\myServlet
相對路徑
不以盤符開頭,相對於某個路徑
不以正斜槓開頭
直接寫路徑和資源名稱,相對於當前路徑,和當前WEB資源在同一個路徑下
以正斜槓開頭
服務器端
Servlet映射路徑,轉發路徑和包含路徑
正斜槓代表的當前WEB應用的根路徑
客戶端
a,img,form
正斜槓代表的WEB服務器的根路徑,如果我們要訪問某個應用下的WEB自已,需要手動的加上應用的名稱

13_Servlet方法調用流程

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