Tomcat&Servlet筆記

# 今日內(nèi)容

1. web相關(guān)概念回顧

2. web服務(wù)器軟件:Tomcat

3. Servlet入門學習

## web相關(guān)概念回顧

1. 軟件架構(gòu)

1. C/S:客戶端/服務(wù)器端

2. B/S:瀏覽器/服務(wù)器端

2. 資源分類

1. 靜態(tài)資源:所有用戶訪問后座慰,得到的結(jié)果都是一樣的谈宛,稱為靜態(tài)資源.靜態(tài)資源可以直接被瀏覽器解析

* 如: html,css,JavaScript

2. 動態(tài)資源:每個用戶訪問相同資源后譬猫,得到的結(jié)果可能不一樣糯彬。稱為動態(tài)資源棚愤。動態(tài)資源被訪問后,需要先轉(zhuǎn)換為靜態(tài)資源败玉,在返回給瀏覽器

* 如:servlet/jsp,php,asp....

3. 網(wǎng)絡(luò)通信三要素

1. IP:電子設(shè)備(計算機)在網(wǎng)絡(luò)中的唯一標識茄蚯。

2. 端口:應用程序在計算機中的唯一標識。 0~65536

3. 傳輸協(xié)議:規(guī)定了數(shù)據(jù)傳輸?shù)囊?guī)則

1. 基礎(chǔ)協(xié)議:

1. tcp:安全協(xié)議闻妓,三次握手菌羽。 速度稍慢

2. udp:不安全協(xié)議。 速度快

## web服務(wù)器軟件:

* 服務(wù)器:安裝了服務(wù)器軟件的計算機

* 服務(wù)器軟件:接收用戶的請求由缆,處理請求,做出響應

* web服務(wù)器軟件:接收用戶的請求,處理請求码邻,做出響應媳瞪。

* 在web服務(wù)器軟件中缸沃,可以部署web項目,讓用戶通過瀏覽器來訪問這些項目

* web容器

* 常見的java相關(guān)的web服務(wù)器軟件:

* webLogic:oracle公司,大型的JavaEE服務(wù)器,支持所有的JavaEE規(guī)范蚊逢,收費的。

* webSphere:IBM公司箫章,大型的JavaEE服務(wù)器烙荷,支持所有的JavaEE規(guī)范,收費的檬寂。

* JBOSS:JBOSS公司的终抽,大型的JavaEE服務(wù)器,支持所有的JavaEE規(guī)范焰薄,收費的。

* Tomcat:Apache基金組織扒袖,中小型的JavaEE服務(wù)器塞茅,僅僅支持少量的JavaEE規(guī)范servlet/jsp。開源的季率,免費的野瘦。

* JavaEE:Java語言在企業(yè)級開發(fā)中使用的技術(shù)規(guī)范的總和,一共規(guī)定了13項大的規(guī)范

* Tomcat:web服務(wù)器軟件

1. 下載:http://tomcat.apache.org/

2. 安裝:解壓壓縮包即可飒泻。

* 注意:安裝目錄建議不要有中文和空格

3. 卸載:刪除目錄就行了

4. 啟動:

* bin/startup.bat ,雙擊運行該文件即可

* 訪問:瀏覽器輸入:http://localhost:8080 回車訪問自己

? http://別人的ip:8080 訪問別人

* 可能遇到的問題:

1. 黑窗口一閃而過:

* 原因: 沒有正確配置JAVA_HOME環(huán)境變量

* 解決方案:正確配置JAVA_HOME環(huán)境變量

2. 啟動報錯:

1. 暴力:找到占用的端口號鞭光,并且找到對應的進程,殺死該進程

* netstat -ano

2. 溫柔:修改自身的端口號

* conf/server.xml

* <Connector port="8888" protocol="HTTP/1.1"

? ? ? ? ? ? ? connectionTimeout="20000"

? ? ? ? ? ? ? redirectPort="8445" />

* 一般會將tomcat的默認端口號修改為80泞遗。80端口號是http協(xié)議的默認端口號惰许。

* 好處:在訪問時,就不用輸入端口號

5. 關(guān)閉:

1. 正常關(guān)閉:

* bin/shutdown.bat

* ctrl+c

2. 強制關(guān)閉:

* 點擊啟動窗口的×

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創(chuàng)建任意名稱的xml文件聊倔。在文件中編寫

<Context docBase="D:\hello" />

* 虛擬目錄:xml文件的名稱

* 靜態(tài)項目和動態(tài)項目:

* 目錄結(jié)構(gòu)

* java動態(tài)項目的目錄結(jié)構(gòu):

-- 項目的根目錄

-- WEB-INF目錄:

-- web.xml:web項目的核心配置文件

-- classes目錄:放置字節(jié)碼文件的目錄

-- lib目錄:放置依賴的jar包

* 將Tomcat集成到IDEA中晦毙,并且創(chuàng)建JavaEE的項目,部署項目耙蔑。

## Servlet:? server applet

* 概念:運行在服務(wù)器端的小程序

* Servlet就是一個接口见妒,定義了Java類被瀏覽器訪問到(tomcat識別)的規(guī)則。

* 將來我們自定義一個類甸陌,實現(xiàn)Servlet接口须揣,復寫方法盐股。

* 快速入門:

1. 創(chuàng)建JavaEE項目

2. 定義一個類,實現(xiàn)Servlet接口

* public class ServletDemo1 implements Servlet

3. 實現(xiàn)接口中的抽象方法

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>

* 執(zhí)行原理:

1. 當服務(wù)器接受到客戶端瀏覽器的請求后返敬,會解析請求URL路徑遂庄,獲取訪問的Servlet的資源路徑

2. 查找web.xml文件,是否有對應的<url-pattern>標簽體內(nèi)容劲赠。

3. 如果有涛目,則在找到對應的<servlet-class>全類名

4. tomcat會將字節(jié)碼文件加載進內(nèi)存,并且創(chuàng)建其對象

5. 調(diào)用其方法

* Servlet中的生命周期方法:

1. 被創(chuàng)建:執(zhí)行init方法凛澎,只執(zhí)行一次

* Servlet什么時候被創(chuàng)建霹肝?

* 默認情況下,第一次被訪問時塑煎,Servlet被創(chuàng)建

* 可以配置執(zhí)行Servlet的創(chuàng)建時機沫换。

* 在<servlet>標簽下配置

1. 第一次被訪問時,創(chuàng)建

? ? ? ? ? ? ? ? * <load-on-startup>的值為負數(shù)

? ? ? ? ? ? 2. 在服務(wù)器啟動時最铁,創(chuàng)建

? ? ? ? ? ? ? ? * <load-on-startup>的值為0或正整數(shù)

* Servlet的init方法讯赏,只執(zhí)行一次,說明一個Servlet在內(nèi)存中只存在一個對象冷尉,Servlet是單例的

* 多個用戶同時訪問時漱挎,可能存在線程安全問題。

* 解決:盡量不要在Servlet中定義成員變量雀哨。即使定義了成員變量磕谅,也不要對修改值

2. 提供服務(wù):執(zhí)行service方法,執(zhí)行多次

* 每次訪問Servlet時雾棺,Service方法都會被調(diào)用一次膊夹。

3. 被銷毀:執(zhí)行destroy方法,只執(zhí)行一次

* Servlet被銷毀時執(zhí)行捌浩。服務(wù)器關(guān)閉時放刨,Servlet被銷毀

* 只有服務(wù)器正常關(guān)閉時,才會執(zhí)行destroy方法尸饺。

* destroy方法在Servlet被銷毀之前執(zhí)行宏榕,一般用于釋放資源

* Servlet3.0:

* 好處:

* 支持注解配置∏值瑁可以不需要web.xml了麻昼。

* 步驟:

1. 創(chuàng)建JavaEE項目,選擇Servlet的版本3.0以上馋辈,可以不創(chuàng)建web.xml

2. 定義一個類抚芦,實現(xiàn)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的相關(guān)配置

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. 斷點調(diào)試:使用"小蟲子"啟動 dubug 啟動

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末尔崔,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子褥民,更是在濱河造成了極大的恐慌季春,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件消返,死亡現(xiàn)場離奇詭異载弄,居然都是意外死亡,警方通過查閱死者的電腦和手機撵颊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進店門宇攻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人倡勇,你說我怎么就攤上這事逞刷。” “怎么了妻熊?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵夸浅,是天一觀的道長。 經(jīng)常有香客問我扔役,道長帆喇,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任厅目,我火速辦了婚禮番枚,結(jié)果婚禮上法严,老公的妹妹穿的比我還像新娘损敷。我一直安慰自己,他們只是感情好深啤,可當我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布拗馒。 她就那樣靜靜地躺著,像睡著了一般溯街。 火紅的嫁衣襯著肌膚如雪诱桂。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天呈昔,我揣著相機與錄音挥等,去河邊找鬼。 笑死堤尾,一個胖子當著我的面吹牛肝劲,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼辞槐,長吁一口氣:“原來是場噩夢啊……” “哼掷漱!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起榄檬,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤卜范,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后鹿榜,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體海雪,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年犬缨,在試婚紗的時候發(fā)現(xiàn)自己被綠了喳魏。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡怀薛,死狀恐怖刺彩,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情枝恋,我是刑警寧澤创倔,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站焚碌,受9級特大地震影響畦攘,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜十电,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一知押、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧鹃骂,春花似錦台盯、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至寝殴,卻和暖如春蒿叠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蚣常。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工市咽, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人抵蚊。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓施绎,卻偏偏與公主長得像曼验,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子粘姜,可洞房花燭夜當晚...
    茶點故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 今日內(nèi)容 web相關(guān)概念回顧 web服務(wù)器軟件: Servlet: server applet IDEA與tom...
    cxq要努力閱讀 75評論 0 0
  • 第一章 WEB概述 1.WEB簡介 Javaweb: 用Java技術(shù)來解決相關(guān)web互聯(lián)網(wǎng)領(lǐng)域的技術(shù)總和鬓照。web包...
    北冥有魚_很好吃閱讀 371評論 0 0
  • web相關(guān)概念 軟件架構(gòu)C/S:客戶端/服務(wù)器端B/S:瀏覽器/服務(wù)器端 資源分類靜態(tài)資源:所有用戶訪問后,得到的...
    abboo閱讀 196評論 0 0
  • 今日內(nèi)容 web相關(guān)概念回顧 web服務(wù)器軟件: 服務(wù)器:安裝了服務(wù)器軟件的計算機服務(wù)器軟件:接收用戶的請求孤紧,處理...
    Jaye瓶子閱讀 187評論 0 1
  • ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■↓↓↓↓↓↓WEB↓↓↓↓...
    _Levi__閱讀 1,048評論 1 0