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文件
在標籤體中配置
* docBase:項目存放的路徑
* path:虛擬目錄
3. 在conf\Catalina\localhost創建任意名稱的xml文件。在文件中編寫
* 虛擬目錄:xml文件的名稱
- 靜態項目和動態項目:
* 目錄結構
* java動態項目的目錄結構:
-- 項目的根目錄
-- WEB-INF目錄:
-- web.xml:web項目的核心配置文件
-- classes目錄:放置字節碼文件的目錄
-- lib目錄:放置依賴的jar包
- 將Tomcat集成到IDEA中,並且創建JavaEE的項目,部署項目。
Servlet: server applet
-
概念:運行在服務器端的小程序
* Servlet就是一個接口,定義了Java類被瀏覽器訪問到(tomcat識別)的規則。
* 將來我們自定義一個類,實現Servlet接口,複寫方法。-
快速入門:
-
創建JavaEE項目
-
定義一個類,實現Servlet接口
- public class ServletDemo1 implements Servlet
-
實現接口中的抽象方法
-
配置Servlet
demo1 cn.itcast.web.servlet.ServletDemo1 demo1 /demo1
在web.xml中配置:
-
-
執行原理:
- 當服務器接受到客戶端瀏覽器的請求後,會解析請求URL路徑,獲取訪問的Servlet的資源路徑
- 查找web.xml文件,是否有對應的標籤體內容。
- 如果有,則在找到對應的全類名
- tomcat會將字節碼文件加載進內存,並且創建其對象
- 調用其方法
-
Servlet中的生命週期方法:
-
被創建:執行init方法,只執行一次
-
Servlet什麼時候被創建?
- 默認情況下,第一次被訪問時,Servlet被創建
- 可以配置執行Servlet的創建時機。
- 在標籤下配置
- 第一次被訪問時,創建
- 的值爲負數
- 在服務器啓動時,創建
- 的值爲0或正整數
- 第一次被訪問時,創建
- 在標籤下配置
-
Servlet的init方法,只執行一次,說明一個Servlet在內存中只存在一個對象,Servlet是單例的
- 多個用戶同時訪問時,可能存在線程安全問題。
- 解決:儘量不要在Servlet中定義成員變量。即使定義了成員變量,也不要對修改值
-
-
提供服務:執行service方法,執行多次
- 每次訪問Servlet時,Service方法都會被調用一次。
-
被銷燬:執行destroy方法,只執行一次
- Servlet被銷燬時執行。服務器關閉時,Servlet被銷燬
- 只有服務器正常關閉時,纔會執行destroy方法。
- destroy方法在Servlet被銷燬之前執行,一般用於釋放資源
-
-
Servlet3.0:
-
好處:
- 支持註解配置。可以不需要web.xml了。
-
步驟:
-
創建JavaEE項目,選擇Servlet的版本3.0以上,可以不創建web.xml
-
定義一個類,實現Servlet接口
-
複寫方法
-
在類上使用@WebServlet註解,進行配置
- @WebServlet(“資源路徑”)
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface WebServlet {
String name() default “”;//相當於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 啓動