tomcat和Servlet
tomcat部署專案的方式
1 直接將專案放在webapps目錄下
/hello: 專案的訪問路徑-->虛擬目錄
簡化部署:將專案打成一個war包,再將war包放置到webapps目錄下
war包會自動解壓縮
2 配置conf/server.xml
在<Host>標籤中配置
<Context docBase="D:\hello" path="/hehe"/>
docBase 專案存放的路徑
path 虛擬目錄
3 在Conf\Catalina\localhost 建立任意名稱的xml檔案。在檔案中編寫
<Context docBase="D:\hello"/>
虛擬目錄:xml檔案的名稱
靜態專案和動態專案:
目錄結構
java動態專案的目錄結構:
--專案的根目錄
--WEB-INF目錄:
-- web.xml: web專案的核心配置檔案
--classes:放置位元組碼檔案的目錄
--lib目錄:放置依賴的jar包
Servlet: server applet
概念:執行在伺服器端的小程式
Servlet就是一個介面,定義了java類被瀏覽器訪問到(tomcat識別)的規則
將來自己自定義一個類,實現Servlet介面,複寫方法
快速入門:
1 建立JavaEE專案
2 定義一個類,實現Servlet介面
public class ServletDemo1 implements Servlet
3 實現介面中的抽象方法
4 配置Servlet
在web.xml中配置:
<servlet>
<servlet-name>demo1</servlet-name>
<servlet-class>cn.itcast.web.servlet.ServletDemo1</servlet-class>
</servlet> //tomcat將全類名對應的位元組碼檔案載入進記憶體 Class.forName()
建立物件 cls.newInstance();
呼叫方法---service
<servlet-mapping>
<servlet-name>demo1</servlet-name>
<url-pattern>/demo1<url-pattern>
</servlet-mapping>
執行原理
1 當伺服器接收到客戶端瀏覽器的請求後,會解析請求URL路徑,獲取訪問的Servlet的資源路徑
2 查詢web.xml檔案,是否有對應的<url-pattern>標籤體內容
3 如果有,則在找到對應的<servlet-class>全類名
4 tomcat會將位元組碼檔案載入進記憶體,並且建立其物件
5 呼叫其方法
Servlet中的生命週期
1 被建立:執行init方法,只執行一次
Servlet什麼時候被建立
預設情況下,第一次被訪問時,Servlet被建立
可以配置執行Servlet的建立時機
在<servlet>標籤下配置
1 第一次被訪問時,建立
<load-on-startup>的值為負數
2 在伺服器啟動時,建立
<load-on-startup>的值為0或正整數
Servlet的init方法,只執行一次,說明一個Servlet在記憶體中只存在一個物件,Servlet是單例的
多個使用者同時訪問是,可能存線上程安全問題
解決:儘量不要在Servlet中定義成員變數。即使定義了成員變數,也不要修改值
2 提供服務:執行service方法,執行多次
每次訪問Servlet時,Service方法都會被呼叫一次
3 被銷燬:執行destroy方法,只執行一次
Servlet被銷燬時執行。伺服器關閉時,Servlet被銷燬
只有伺服器正常關閉時,才會執行destroy方法
destroy方法在Servlet被銷燬之前執行,一般用於釋放資源
4 獲取Servlet的配置物件:getServletConfig()
5 獲取Servlet的一些資訊,版本,作者,等等:getServletInfo()
Servlet3.0:
好處:
支援註解配置。可以不需要web.xml了
步驟:
1 建立JavaEE的專案,選擇Servlet的版本3.0以上,可以不建立web.xml
2 定義一個類,實現Servlet介面
3 複寫方法
4 在類上使用Servlet註解,進行配置
@webServlet("資源路徑")