WEB 的學習筆記
1.服務器
一 、網絡的架構
client/server : 客戶端/服務端
優點 : 交互性好,服務器壓力小。
缺點:客戶端更新了,下載。
browser/server : 瀏覽器端/服務器端
缺點:服務器壓力大。
優點:服務器更新就ok。
服務器的介紹
- 原理:網絡編程。
- 概念:
- 硬件:就是一臺主機。
- 軟件:安裝了服務器的軟件(tomcat)。
- 安裝軟件后,稱為WEB服務器。
- 啟動服務器,訪問資源。
- 訪問:http://+ip+端口號 找到主機。如果資源的文件,就可以訪問了。
* 訪問百度:http://www.baidu.com/
* HTTP協議默認端口號是80,可以不寫。
* ping www.baidu.com 61.135.169.121
* 如果想訪問本機的服務器(擴展)
* http://localhost:80
* http://127.0.0.1:80
常見服務器
WebLogic BEA公司開發的(被Oracle收購了) 收費的 支持JAVAEE所有的規范(EJB servlet/jsp規范)* (JAVA MySql(Oracle) WebLogic)
WebSphere IBM公司開發的 收費的 支持JAVAEE所有的規范(EJB servlet/jsp規范) * 銀行喜歡用
Tomcat apache(開源的組織,非常的偉大)只Servlet/JSP規范。免費的。
Tomcat的安裝和注意實現
-(前提條件)安裝JDK,配置java的環境變量。
- 安裝版(給客戶用)
* 解壓版:解壓當前文件夾,目錄不要有中文。
* 啟動服務器:tomcat/bin/startup.bat(啟動服務器)
* 訪問:http://192.168.24.215:8080訪問服務器的主頁。
* 關閉服務器:點關閉按鈕,shutdown.bat
Tomcat的 常見啟動問題
-
配置環境變量。C:\Program Files (x86)\Java\jdk1.6.0_16
- 一閃而過,環境變量沒配置好。
-
端口占用問題
- java.net.BindException: Address already in use: JVM_Bind
- 端口被占用。
- 解決問題:
- 結束掉占用端口的應用程序。
- 找到占用端口的應用程序。
- 通過命令 netstat –ano,在任務管理器中結束程序。
- java.net.BindException: Address already in use: JVM_Bind
-
修改端口號。
修改配置文件了。
tomcat/conf/server.xml配置文件
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />有應用程序占用80端口,用上邊的方式解決。
有的WIN7系統自帶World wide web publish IIS服務,默認占用80端口。
如果有。去服務中,該手動啟動。
概率非常小。操作系統占用80端口。
Tomcat目錄結構
* bin(**) 啟動項,關閉項。
* conf(*****) 里面Tomcat配置文件
* lib(**) 服務器運行使用的jar包
* logs(***) 日志文件,運行時產生的日志。
* temp(**) 運行時臨時文件
* webapps(*****) web applications(web的應用們)
* work(*****) JSP翻譯成Servlet程序
- 如果動態的WEB資源,把WEB資源發布到服務器的webapps目錄下的時候,有固定的目 錄結構。
-
靜態
的web資源- HTML、CSS、JAVASCRIPT
-
動態
的web資源- 數據發生變化。例子:
- Servlet/JSP
-
動態的WEB資源程序,目錄結構如下(必須記住)
- Servlet/JSP只要包含,就稱為動態的WEB資源
website
| --- 存放 HTML CSS JAVASCRIPT JSP 圖片
WEB-INF
|
web.xml 程序的入口。配置文件(必須有的)
classes 文件夾,名稱固定的 可選的
lib 文件夾,名稱固定 可選的
Tomcat和MyEclipse的集成
window -- 選項 -- MyEclipse -- servers -- 選擇tomcat -- 選擇Enable -- 選擇tomcat根目錄
配置JDK -- 選擇JDK。
-
啟動服務器。
- 虛擬路徑(訪問路徑)
默認和項目名稱是相同(不要去修改)。
-
WebRoot變成了虛擬路徑(訪問的路徑)
* 直接復制項目,需要修改虛擬路徑。 * 項目上右鍵 -- 選擇屬性 -- MyEclipse -- web -- 修改虛擬路徑。 * 擴展 * window -- show view -- servers * Tomcat管理員的配置(了解) * 在tomcat/conf/tomcat-user.xml <role rolename="manager"/> <user username="admin" password="admin" roles="manager"/> * 如何部署WEB程序(三種) * 項目復制到webapps目錄下。 * 通過配置虛擬路徑的方式。 * 直接修改配置文件 * 寫到tomcat/conf/server.xml * 找到<Host>標簽,配置到Host標簽的中間 * 目的:通過配置,配置訪問路徑,準確找到c:\bb的文件 * <Context docBase="文件夾的真實目錄" path="虛擬路徑(訪問路徑)" ><Context> * <Context docBase="C:\bb" path="/itcast" ></Context> * 訪問:http://localhost:80/itcast/文件名 * 自己編寫一個配置文件(格式)(推薦使用) * 自定義xxx.xml結尾文件,在$CATALINA_HOME/conf/[enginename]/[hostname]/ directory.目錄下。 * 把xxx當成虛擬(訪問)路徑。 * 在xml的文件中編寫。 * 在哪個目錄下: * $CATALINA_HOME/conf/[enginename]/[hostname]/ directory. * 如果找引擎的名稱和主機的名稱,在server.xml中找。 * tomcat/conf/Catalina/localhost/ccc.xml * ccc.xml的文件編寫什么內容? * <Context docBase="C:\cc"></Context> * 訪問:http://localhost:80/ccc/文件名 * 配置虛擬主機(了解)
- HTTP的協議
- 啥是HTTP的協議:超文本傳輸協議。
- 基于TCP鏈接的傳輸協議。
- HTTP協議默認是80
- 基于請求和響應的模式。(先有請求,后有響應)
- www.baidu.com(訪問百度的服務器)
- 百度的首頁返回給我
- 客戶端連上web服務器后,若想獲得web服務器中的某個web資源,
需遵守一定的通訊格式,HTTP協議用于定義客戶端與web服務器通迅的格式
- HTTP的協議
- 虛擬路徑(訪問路徑)
* 使用telnet命令,快速了解http協議。
* 如果是win的系統,開啟telnet的命令。
啟動服務器.
cmd>telnet localhost 80 回車
telnet命令有一個亂碼問題 解決亂碼.
解決 ctrl+] 回車
注意:命令行中輸入的內容不能寫錯,一旦寫錯了,不支持刪除。
請求:
GET /aa/1.html HTTP/1.1
host:localhost
輸入兩次回車
* 使用telnet命令發送了一次請求
* 請求:
GET /aa/1.html HTTP/1.1
host:localhost
* 響應:
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
ETag: W/"21-1416624196782"
Last-Modified: Sat, 22 Nov 2014 02:43:16 GMT
Content-Type: text/html
Content-Length: 21
Date: Sat, 22 Nov 2014 07:33:53 GMT
<h1>hello java!!</h1>
* HTTP協議的版本
* HTTP/1.0
* 鏈接后,只能獲取一個web資源。
* 鏈接后,發送請求,服務器做出響應,鏈接立即斷開。
GET /aa/1.html HTTP/1.0
host:localhost
* HTTP/1.1(使用)
* 鏈接后,可以獲取多個web資源。
* 鏈接后,發送請求,服務器做出響應,鏈接不會立即斷開。
再次發送請求,直接有一段時間沒操作,自動斷開。
GET /aa/1.html HTTP/1.1
host:localhost
* 請求:
* 請求行
* 請求方式
* POST、GET、HEAD、OPTIONS、DELETE、TRACE、PUT、CONNECT
* 常用post和get
* 區別:
* get把參數顯示在地址欄上,安全級別低,不支持大數據。
* post把參數封裝請求體中,安全級別高,支持大數據。
* 請求地址
* 請求資源
* 協議版本
* HTTP/1.1
* 請求頭
Accept: text/html,image/*
Accept-Charset: ISO-8859-1
Accept-Encoding: gzip
Accept-Language:zh-cn
Host: www.itcast.com:80
If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT
Referer: http://www.itcast.com/index.jsp
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
Connection: close/Keep-Alive
Date: Tue, 11 Jul 2000 18:23:51 GMT
* 重要的頭
* If-Modified-Since 必須和響應頭信息一起來完成控制本地的緩存。
* Referer 當前的網頁的來源。(防止盜鏈)
* User-Agent 判斷瀏覽器的版本(文件下載的時候)
* 空行
* 請求體
* 封裝post參數列表。
* 響應
* 響應行
* 協議版本
* HTTP/1.1
* 狀態碼
200 :請求成功處理,一切OK
302 :請求重定向
304 :服務器端資源沒有改動,通知客戶端查找本地緩存
404 :客戶端訪問資源不存在
500 :服務器內部出錯
* 狀態碼描述
* 響應頭
Location: http://www.it315.org/index.jsp
Server:apache tomcat
Content-Encoding: gzip
Content-Length: 80
Content-Language: zh-cn
Content-Type: text/html; charset=GB2312
Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT
Refresh: 1;url=http://www.it315.org
Content-Disposition: attachment; filename=aaa.zip
Expires: -1
Cache-Control: no-cache
Pragma: no-cache
Connection: close/Keep-Alive
Date: Tue, 11 Jul 2000 18:23:51 GMT
* 重要的頭
* Location 和302一起完成重定向。
* Last-Modified 和請求頭If-Modified-Since一起控制緩存。和狀態碼304
* Refresh 完成頁面的定時跳轉
* Content-Disposition 設置文件是以附件打開
Expires: -1
Cache-Control: no-cache
Pragma: no-cache
* 禁用緩存(網銀系統)
* 空行
* 響應體
* 存放真正的數據。
* 擴展:
轉發:找班長借錢,他自己找富班長借錢,
重定向:(找班長借錢,發送一次請求,回了我沒錢,返回狀態碼302,給副班長地址,再去找富班長借錢,又發送了一次)