Tomcat&Servlet學習
1. web相關概念回顧
2. web伺服器軟體:Tomcat
3. Servlet入門學習
web相關概念回顧
1. 軟體架構
1. C/S:客戶端/伺服器端
2. B/S:瀏覽器/伺服器端
2. 資源分類
1. 靜態資源:所有使用者訪問後,得到的結果都是一樣的,稱為靜態資源.靜態資源可以直接被瀏覽器解析
* 如: html,css,JavaScript
2. 動態資源:每個使用者訪問相同資源後,得到的結果可能不一樣。稱為動態資源。動態資源被訪問後,需要先轉換為靜態資源,在返回給瀏覽器
* 如:servlet/jsp,php,asp....
3. 網路通訊三要素
1. IP:電子裝置(計算機)在網路中的唯一標識。
2. 埠:應用程式在計算機中的唯一標識。 0~65536
3. 傳輸協議:規定了資料傳輸的規則
1. 基礎協議:
1. tcp:安全協議,三次握手。 速度稍慢
2. udp:不安全協議。 速度快
web伺服器軟體:
* 伺服器:安裝了伺服器軟體的計算機
* 伺服器軟體:接收使用者的請求,處理請求,做出響應
* web伺服器軟體:接收使用者的請求,處理請求,做出響應。
* 在web伺服器軟體中,可以部署web專案,讓使用者通過瀏覽器來訪問這些專案
* web容器
* 常見的java相關的web伺服器軟體:
* webLogic:oracle公司,大型的JavaEE伺服器,支援所有的JavaEE規範,收費的。
* webSphere:IBM公司,大型的JavaEE伺服器,支援所有的JavaEE規範,收費的。
* JBOSS:JBOSS公司的,大型的JavaEE伺服器,支援所有的JavaEE規範,收費的。
* Tomcat:Apache基金組織,中小型的JavaEE伺服器,僅僅支援少量的JavaEE規範servlet/jsp。開源的,免費的。
* JavaEE:Java語言在企業級開發中使用的技術規範的總和,一共規定了13項大的規範
* Tomcat:web伺服器軟體
1. 下載:http://tomcat.apache.org/
2. 安裝:解壓壓縮包即可。
* 注意:安裝目錄建議不要有中文和空格
3. 解除安裝:刪除目錄就行了
4. 啟動:
* bin/startup.bat ,雙擊執行該檔案即可
* 訪問:瀏覽器輸入:http://localhost:8080 回車訪問自己
http://別人的ip:8080 訪問別人
* 可能遇到的問題:
1. 黑視窗一閃而過:
* 原因: 沒有正確配置JAVA_HOME環境變數
* 解決方案:正確配置JAVA_HOME環境變數
2. 啟動報錯:
1. 暴力:找到佔用的埠號,並且找到對應的程式,殺死該程式
* netstat -ano
2. 溫柔:修改自身的埠號
* conf/server.xml
* <Connector port="8888" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8445" />
* 一般會將tomcat的預設埠號修改為80。80埠號是http協議的預設埠號。
* 好處:在訪問時,就不用輸入埠號
5. 關閉:
1. 正常關閉:
* bin/shutdown.bat
* ctrl+c
2. 強制關閉:
* 點選啟動視窗的×
6. 配置:
* 部署專案的方式:
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包
* 將Tomcat整合到IDEA中,並且建立JavaEE的專案,部署專案。
Servlet: server applet
* 概念:執行在伺服器端的小程式
* Servlet就是一個介面,定義了Java類被瀏覽器訪問到(tomcat識別)的規則。
* 將來我們自定義一個類,實現Servlet介面,複寫方法。
* 快速入門:
1. 建立JavaEE專案
2. 定義一個類,實現Servlet介面
* public class ServletDemo1 implements Servlet
3. 實現介面中的抽象方法
4. 配置Servlet
在web.xml中配置:
<!--配置Servlet -->
<servlet>
<servlet-name>demo1</servlet-name>
<servlet-class>cn.itcast.web.servlet.ServletDemo1</servlet-class>
</servlet>
<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被銷燬之前執行,一般用於釋放資源
* Servlet3.0:
* 好處:
* 支援註解配置。可以不需要web.xml了。
* 步驟:
1. 建立JavaEE專案,選擇Servlet的版本3.0以上,可以不建立web.xml
2. 定義一個類,實現Servlet介面
3. 複寫方法
4. 在類上使用@WebServlet註解,進行配置
* @WebServlet("資源路徑")
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface WebServlet {
String name() default "";//相當於<Servlet-name>
String[] value() default {};//代表urlPatterns()屬性配置
String[] urlPatterns() default {};//相當於<url-pattern>
int loadOnStartup() default -1;//相當於<load-on-startup>
WebInitParam[] initParams() default {};
boolean asyncSupported() default false;
String smallIcon() default "";
String largeIcon() default "";
String description() default "";
String displayName() default "";
}
IDEA與tomcat的相關配置
1. IDEA會為每一個tomcat部署的專案單獨建立一份配置檔案
* 檢視控制檯的log:Using CATALINA_BASE: "C:\Users\fqy\.IntelliJIdea2018.1\system\tomcat\_itcast"
2. 工作空間專案 和 tomcat部署的web專案
* tomcat真正訪問的是“tomcat部署的web專案”,"tomcat部署的web專案"對應著"工作空間專案" 的web目錄下的所有資源
* WEB-INF目錄下的資源不能被瀏覽器直接訪問。
3. 斷點除錯:使用"小蟲子"啟動 dubug 啟動
相關文章
- Tomcat&Servlet -2024/10/15TomcatServlet
- 學習學習再學習
- 深度學習——學習目錄——學習中……深度學習
- 深度學習(一)深度學習學習資料深度學習
- 深度學習學習框架深度學習框架
- 強化學習-學習筆記3 | 策略學習強化學習筆記
- 學習產品快報09 | “CSDN學習”:增加學習提醒,提示學習不忘記
- 【強化學習】強化學習/增強學習/再勵學習介紹強化學習
- 學習ThinkPHP,學習OneThinkPHP
- 前端學習之Bootstrap學習前端boot
- 學而習之,成就學習
- 前端週刊第62期:學習學習再學習前端
- 深度學習+深度強化學習+遷移學習【研修】深度學習強化學習遷移學習
- 強化學習-學習筆記2 | 價值學習強化學習筆記
- Golang 學習——interface 介面學習(一)Golang
- Golang 學習——interface 介面學習(二)Golang
- 深度學習學習7步驟深度學習
- 《JAVA學習指南》學習筆記Java筆記
- Go學習【二】學習資料Go
- java學習之道 --- 如何學習java?Java
- 免殺學習-基礎學習
- 強化學習10——迭代學習強化學習
- 程式設計學習MarkDown學習程式設計
- this學習
- 學習
- 【區塊鏈學習】《區塊鏈學習指南》學習筆記區塊鏈筆記
- Flutter學習記錄(一)Dart學習FlutterDart
- 從學習語文聊聊如何學習
- kitten 學習教程(一) 學習筆記筆記
- 整合學習(一):簡述整合學習
- 學習態度和學習計劃
- 學習筆記----圖論學習中筆記圖論
- 酷學習:學習可以很酷很好玩
- 強化學習-學習筆記13 | 多智慧體強化學習強化學習筆記智慧體
- 學習程式設計 vs 學習電腦科學程式設計
- 駁 《駁 《駁 《駁 《停止學習框架》》》》、《駁 《駁 《停止學習框架》》》、《駁 《停止學習框架》》、《停止學習框架》框架
- 學習筆記【深度學習2】:AI、機器學習、表示學習、深度學習,第一次大衰退筆記深度學習AI機器學習
- 學習英語,首先還是要有學習的習慣