6.JavaEE開發(fā)入門(1)(我的JavaEE筆記)

一、Tomcat的配置

1.目錄結(jié)構(gòu)

bin:存放啟動和關(guān)閉tomcat的腳本文件
conf:存放配置文件
lib:存放tomcat服務(wù)器的支撐jar包
logs:存放日志文件,一旦服務(wù)器啟動出現(xiàn)問題,可以查看里面的日志
temp:存放臨時文件
webapps:web應(yīng)用所在目錄,即供外界訪問的web資源的存放目錄
work:工作目錄

2.配置

2.1虛擬目錄映射配置

修改服務(wù)器的端口號是在server.xml(conf文件夾)中進(jìn)行修改,修改成80之后以后訪問服務(wù)器的時候就不用添加端口號8080了,如下:

<Connector port="80" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

修改之后必須重新啟動才能使用。這里注意:修改配置文件之后必須重啟才能使用。

2.2虛擬目錄的配置

將Tomcat->webapps->ROOT中的WEB-INF目錄全部復(fù)制到E:\WebWorkspace這個目錄中去。復(fù)制好之后我們還要讓Tomcat知道這個映射,所以在E:\software\tomcat\conf路徑中的server.xml文件中進(jìn)行修改:

<Context  path="/web"  docBase="E:\WebWorkspace">
      </Host>

注意:是在</Host>的上方加上一行,其中path="/web"表示我們以后再瀏覽器中訪問的時候所用的目錄,比如使用http://localhost/web進(jìn)行訪問,而docBase="E:\WebWorkspace"表示的是絕對路徑,即我們以后放置web程序的目錄。同時注意,如果以后想要更改,一定要將WEB-INF目錄這個目錄放置在這個文件夾的一級目錄中,即此時WebWorkspace相當(dāng)于一個web應(yīng)用,而不能是多個。配置完之后服務(wù)器同樣需要重新啟動。一般我們不這樣配置,后面會講另外的方式。

我們在web開發(fā)中會經(jīng)常見到兩個錯誤,一個錯誤是404,這種4開頭的一般表示的是客戶端的請求錯誤(路徑錯誤);一個是5開頭的(500)表示的都是程序錯誤。

若到此時輸入http://localhost/web訪問還是出現(xiàn)404錯誤,這就需要修改tomcat安裝目錄(E:\software\tomcat\conf)中conf目錄下的web.xml配置文件。在文件中找到listings:

<init-param>
            <param-name>listings</param-name>
            <param-value>true</param-value>
</init-param>

保證param-value是true,若不是,改為true。然后重新啟動服務(wù)器,再次刷新網(wǎng)頁即可。

此時會出現(xiàn)一個工作目錄列表,比如我將001.xml的文件放在目錄E:\WebWorkspace之中,然后這個文件就會在網(wǎng)頁上顯示出來,我們點擊就可以運行此文件了。

注意:對于上述的配置虛擬目錄Context這種方式有點麻煩,因為每次都要重啟tomcat服務(wù)器,于是我們一般在E:\software\tomcat\conf\Catalina\localhost這個目錄中進(jìn)行配置,我們可以在里面隨便建立一個.xml的文件,比如web1.xml,然后將Context寫入到里面去:

<Context docBase="E:\WebWorkspace\test_servlet"/>

但是這里我們不需要再寫path路徑,在訪問的時候這個.xml文件的名字web1就是path路徑,http://localhost/web1/login.html就可以訪問了,而且不需要重新啟動。如果servlet的工程有多級目錄,那我們可以這樣起名web1#web.xml,訪問的時候就可以這樣http://localhost/web1/web/login.html訪問了。如果我們將這個配置文件起名為ROOT.xml,那么這就是一個缺省的web應(yīng)用,那么我們在訪問的時候就可以直接這樣http://localhost/login.html,即是將我們默認(rèn)的apache頁面更換了,但是注意這種方式下一定要重啟tomcat服務(wù)器。同時注意,下面講到的更改首頁也首先要配置缺省配置文件。然后在<welcome-file>login.html</welcome-file>中進(jìn)行配置,這樣我們在使用http://localhost 就可以直接訪問到了。

2.3更改首頁

有時候我們不太喜歡這樣訪問出現(xiàn)的首頁,這里我們可以進(jìn)行更改。這同樣是修改tomcat安裝目錄下的E:\software\tomcat\conf中的web.xml,在最下面我們可以看到我們每次訪問的頁面就是下面的紅色部分的三個文件:

<welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
</welcome-file-list>

如果想更改最好不要修改公共的配置,而去修改每一個獨立的虛擬目錄中的配置。將以上部分代碼復(fù)制到E:\WebWorkspace\WEB-INF中的web.xml中的</description>后面:

</description>
     <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

然后將不需要的刪掉,將第一行中的index.html換成自己的文件,比如main.htm,里面可以寫上自己想要顯示的內(nèi)容,注意重啟服務(wù)器。

注意:在以后的配置中我們不建議直接更改tomcat原先的配置文件,這里我們可以先配置一個缺省的xml配置文件之后,然后新建一個工程(一個文件夾),里面放置一個首頁html文件和一個WEB-INF目錄,此目錄中放置一個web.xml,里面配置首頁即可。重啟服務(wù)器。

當(dāng)我們寫好一個jsp的文件并放在E:\WebWorkspace中之后,在瀏覽器中訪問過這個文件后會在tomcat中的work目錄中找到編譯的文件。它會編譯生成相應(yīng)的class文件,以后如果需要使用就不用再次編譯,可以直接使用。每當(dāng)我們改變jsp文件是都會重新編譯。如果發(fā)現(xiàn)不再重新編譯,而且很慢,此時可以將work目錄中的所有文件全部刪除即可。

二、配置虛擬主機(jī)

當(dāng)我們在IE瀏覽器中訪問某個網(wǎng)站時,比如www.baidu.com,瀏覽器會先將此字符串發(fā)給DNS服務(wù)器,將此字符串轉(zhuǎn)換成一個IP地址,然后瀏覽器才通過此IP地址訪問到相應(yīng)的網(wǎng)站。但是我們的IE瀏覽器在將字符串發(fā)給DNS服務(wù)器之前還會查找自己的主機(jī),若本機(jī)上有這個字符串對應(yīng)的IP地址的話,則不會去詢問DNS了,而是直接通過相應(yīng)的IP地址訪問相應(yīng)的網(wǎng)站,我們在目錄C:\Windows\System32\drivers\etc中會發(fā)現(xiàn)一個hosts文件,里面就配置了localhost對應(yīng)的IP地址。所以如果我們要想配置一個虛擬主機(jī),則可以直接在里面添加,比如127.0.0.1 www.yj.com,然后就可以這樣訪問了:http://www.yj.com:8080/web1/login.html,當(dāng)然這里我們已經(jīng)將端口改為80,所以不需要再加端口了。如果想這樣http://www.yj.com訪問,則可以配置缺省目錄。

三、管理平臺

點擊Managing Tomcat中的manager webapps,這時需要提供用戶名和密碼。我們找到conf目錄中的tomcat-users.xml中將最后的

<role rolename="tomcat"/>
  <role rolename="role1"/>
  <user username="tomcat" password="tomcat" roles="tomcat"/>
  <user username="both" password="tomcat" roles="tomcat,role1"/>
  <user username="role1" password="tomcat" roles="role1"/>

這段注釋打開。這樣就為tomcat配置了三個用戶,然后輸入用戶tomcat和密碼tomcat時會出現(xiàn)沒有訪問權(quán)限的錯誤,這時我們需要在配置文件中配置一個管理者的角色,加上這一行:

<role rolename="manager"/>

然后將tomcat這個用戶添加為管理者的角色:將

<user username="tomcat" password="tomcat" roles="tomcat"/>

這一行改為:

<user username="tomcat" password="tomcat" roles="tomcat,manager"/>

重啟服務(wù)器。這個管理平臺是用來管理web應(yīng)用的。

四、web應(yīng)用的組成結(jié)構(gòu)

主目錄工程下:
html、jsp、js等文件

WEB-INF目錄:
classes目錄:存放java類
lib目錄:java運行依賴的jar包
web.xml

ip_image002.jpeg
web應(yīng)用配置文件

context元素常用屬性
docBase: 指定web應(yīng)用程序的文檔基目錄或者war文件的路徑名,可以指定目錄的或war文件的絕對路徑名,也可以指定相對于host元素的appBase目錄的路徑名。該屬性是必須的。
path: 指定web應(yīng)用程序的上下文路徑。在一個特定的虛擬主機(jī)中,所有的上下文路徑是唯一的。如果指定一個上下文路徑為空字符串,則定義了這個虛擬主機(jī)的默認(rèn)web應(yīng)用程序,負(fù)責(zé)處理所有的沒有分配給其他web應(yīng)用程序的請求。
reloadable: 如果設(shè)置為true,服務(wù)器在運行時,會監(jiān)聽WEB-INF/classes和WEB-INF/lib目錄下類的改變,如果發(fā)現(xiàn)類被更新則會自動重啟該web應(yīng)用。一般我們不建議使用。
unpackWAR: 如果為true,服務(wù)器運行web應(yīng)用前將展開所有壓縮的web應(yīng)用程序。默認(rèn)是true。

五、HTTP協(xié)議:

1.什么是http協(xié)議

客戶端連上web服務(wù)器后,若想獲得服務(wù)器中的某個web資源,需要遵守一定的通訊格式,http協(xié)議是用于定義客戶端與web服務(wù)器通訊的格式。

使用telnet程序連上web服務(wù)器,并使用http協(xié)議獲取某個頁面:
(1)首先我們在命令行窗口中輸入:telnet www.baidu.com 80回車,這時我們發(fā)現(xiàn)屏幕一片漆黑;
(2)輸入ctrl+]回車;
(3)輸入GET /a/login.html HTTP/1.1回車
Host:localhost
(4)最后需要連續(xù)按兩次回車

2.HTTP協(xié)議簡介

此協(xié)議是超文本傳輸協(xié)議的簡寫,它是TCP/IP協(xié)議的一個應(yīng)用層協(xié)議,用于定義web瀏覽器與web服務(wù)器之間交換數(shù)據(jù)的過程。
在http1.0協(xié)議中,客戶端與web服務(wù)器建立連接后只能獲取一個web資源,而1.1版本可以在一個連接上獲取多個web資源。

一個問題:
一個web頁面中,使用了img標(biāo)簽引用了三幅圖片,當(dāng)客戶機(jī)訪問服務(wù)器中的這web頁面時,客戶端總共會訪問幾次服務(wù)器,即像服務(wù)器發(fā)送了幾次http請求?
假如web頁面內(nèi)容是:

Ghhjlkl
<img src=”1.gif”>
<img src=”2.gif”>

注意:這種情況下,客戶端總共像服務(wù)器發(fā)送了三次請求**。

3.http請求

客戶端連上服務(wù)器后,向服務(wù)器請求某個web資源,稱之為客戶端像服務(wù)器發(fā)送了一個http請求。一個完整的http請求包括如下內(nèi)容:一個請求行、若干消息頭(請求頭)、以及實體內(nèi)容。

ip_image002.jpeg

注意:空行后面還有實體內(nèi)容
請求行
請求行中的GET稱之為請求方式,請求方式有很多種,常用的也就是get和post兩種方式??蛻舳四J(rèn)是get方式,若要使用post方式,可以自行定義method屬性。

不管是get還是post方式,都用于像服務(wù)器請求某個web資源,其主要區(qū)別在于:
(1)如果是get方式,則可以在請求的url地址后以?的形式帶上交給服務(wù)器的數(shù)據(jù),多個數(shù)據(jù)之間以&進(jìn)行分隔,如:
GET /mail/1.html?name=aaa&password=xxx HTTP/1.1
其特點是在url后面所帶的資源是有限的,數(shù)據(jù)總量不能超過1K。

(2)如果是post方式,可以在請求的實體內(nèi)容中像服務(wù)器發(fā)送數(shù)據(jù),數(shù)據(jù)量無限制。

用于http請求中的常用頭
Accept:瀏覽器通過這個頭告訴服務(wù)器其所支持的數(shù)據(jù)類型;
Accept-Charset:瀏覽器通過這個頭告訴服務(wù)器其所支持的字符集
Accept-Encoding:瀏覽器通過這個頭告訴服務(wù)器其所支持的壓縮格式
Accept-Language:瀏覽器通過這個頭告訴服務(wù)器它的語言環(huán)境
Host:瀏覽器通過這個頭告訴服務(wù)器其想訪問哪臺主機(jī)
If-Modified-Since:瀏覽器通過這個頭告訴服務(wù)器其緩存數(shù)據(jù)的時間
Referer:瀏覽器通過這個頭告訴服務(wù)器,客戶端是哪個頁面發(fā)過來的,用于防盜鏈
Cookie:以后講
Connection:覽器通過這個頭告訴服務(wù)器,請求完后是斷開連接還是保持連接
Date:請求日期

HTTP響應(yīng)的細(xì)節(jié)-狀態(tài)行
狀態(tài)行:HTTP版本號 狀態(tài)碼 原因敘述<CRLF> 如:HTTP/1.1 200 OK
狀態(tài)碼用于表示服務(wù)器對請求的處理結(jié)果,它是一個三位的十進(jìn)制數(shù)。相應(yīng)狀態(tài)碼分為5類:
100-199: 表示成功接收請求,要求客戶端繼續(xù)提交下一次請求才能完成整個處理過程
200-299: 表示成功接收并已完成整個處理過程,常用的是200
300-399: 為完成請求,客戶端需進(jìn)一步細(xì)化請求。例如,請求的資源已經(jīng)移動到一個新地址,常用302、307和304
400-499: 客戶端的請求有誤,常見錯誤404
500-599: 服務(wù)器端出現(xiàn)錯誤,常用500

用于http響應(yīng)中的常用頭
Location:服務(wù)器通過這個頭,告訴瀏覽器跳到哪個頁面
Server:服務(wù)器通過這個頭,告訴瀏覽器當(dāng)前用的服務(wù)器的型號
Content-Encoding:服務(wù)器通過這個頭,告訴瀏覽器數(shù)據(jù)的壓縮格式
Content-language:服務(wù)器通過這個頭,告訴瀏覽器回送數(shù)據(jù)的長度
Content-Type:服務(wù)器通過這個頭,告訴瀏覽器語言環(huán)境
Refresh:服務(wù)器通過這個頭,告訴瀏覽器何時刷新
Content-Disposition:服務(wù)器通過這個頭,告訴瀏覽器以下載的方式打開數(shù)據(jù)
Transfer-Encoding:服務(wù)器通過這個頭,告訴瀏覽器數(shù)據(jù)是以分塊的方式回送的。
Set-Cookie:服務(wù)器通過這個頭,向瀏覽器回送一個Cookie
Expires:服務(wù)器通過這個頭,告訴瀏覽器回送的數(shù)據(jù)不要緩存(指定其值為-1),當(dāng)然還有其他的格式,如cache-control和Pragma
Connection:服務(wù)器通過這個頭,告訴瀏覽器是斷開連接還是保持連接
Date:回送的日期

Servlet調(diào)用過程:
1.瀏覽器通過url地址連接web服務(wù)器;
2.瀏覽器像web服務(wù)器發(fā)送http請求;
3.服務(wù)器解析出客戶端想訪問的主機(jī);
4.服務(wù)器解析出客戶端想訪問的web應(yīng)用
5.服務(wù)器解析出客戶端想訪問的web資源;
6.如果發(fā)現(xiàn)servlet是第一次訪問,服務(wù)器就會加載servlet,創(chuàng)建servlet對象;如果不是第一次訪問那么就會使用以前存在的對象為這次訪問服務(wù),同時這樣的話這一步和下面第七步都不會存在;
7.調(diào)用servlet的init方法;
8.調(diào)用servlet的service方法
9.servlet執(zhí)行service方法,把數(shù)據(jù)寫到response對象中;
10.服務(wù)器拿到response對象并將數(shù)據(jù)發(fā)送到瀏覽器中。
11.如果服務(wù)器停止或此web服務(wù)關(guān)閉,那么就會調(diào)用destroy方法銷毀servlet對象。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容