web開發常識(http協議以及JAVA WEB伺服器的配置)
阿新 • • 發佈:2019-02-06
JavaWeb伺服器的配置使用
WEB開發的前景
軟體開發的兩種架構:B/S 和 C/S隨著網路頻寬的不斷提升,雲端計算概念的提出,瀏覽器只要足夠強大,c/s架構立馬就會被淘汰,不僅c/s架構會被淘汰,軟體最終都會消失、作業系統都可以沒有,最終將會是b/s架構的天下,也就是瀏覽器+搜尋引擎的天下。所有現在桌面軟體提供的功能,最後都由網站提供,也就是說,將來開啟電腦就是一個瀏覽器,想要什麼服務,通過搜尋引擎一找,就可以在網上找到相應的服務,用就是了。所以web開發人員是現在最流行的崗位。
WEB 開發的相關知識
WEB,在英語中web即表示網頁的意思,它用於表示Internet主機上供外界訪問的資源。- 靜態web資源(如HTML頁面):指web頁面中供人們瀏覽的資料始終是不變的。
- 動態web資源:指web頁面中供人們瀏覽的資料是由程式產生的,不同時間點訪問web頁面看到的內容各不相同。
- JSP/Servlet、ASP、PHP、Python等
- 在JAVA中,動態的web資源開發技術統稱為Javaweb。
WEB開發中的伺服器:
伺服器原理:網路程式設計 伺服器的概念:- 硬體:就是一臺電腦
- 軟體:需要在這臺電腦上安裝伺服器的軟體
- 如果一臺電腦上安裝了伺服器的軟體的話,那麼這臺電腦就可以成為WEB伺服器。
- IP+埠號
- 如果是域名—>解析成IP地址—>www.baidu.com
- 如果預設埠是80 的可以不寫
另一個常用的WEB伺服器是IBM公司的WebSphere,支援J2EE規範,啟動介面如下:
在小型的應用系統或者有特殊需要的系統中,可以使用一個免費的WEB伺服器:Tomcat,該伺服器支援全部的JSP以及Servlet規範,啟動介面如下:
Tomcat伺服器
Tomcat官方站點:http://jakarta.apache.org獲取Tomcat安裝程式包
tar.gz(zip)檔案是Linux作業系統下的安裝版本
exe檔案是Windows系統下的安裝版本
zip檔案是Windows系統下的壓縮版本
安裝Tomcat --- 配置JAVA_HOME
如果想要啟動伺服器,必須安裝java和配置JAVA_HOME。
可以在startup.bat的檔案中最後一行加入暫停字元:pause
雙擊 bin 目錄下的 startup.bat 檔案
輸入 http://localhost:8080/,顯示如下介面代表安裝成功
Tomcat常見的啟動問題:
(1)JAVA_HOME 環境變數- 在Windows中設定JAVA_HOME環境變數
- JAVA_HOME路徑必須是JDK不可以是JRE
- WindowsXP使用Fport工具
- win7使用DOS命令netstat -ano
- win7自帶World wide web publish IIS 服務預設佔用埠80
Tomcat的端口占用問題:
同時啟動了多個Tomcat(MyEclipse) (1)將佔用了的8080埠的程式結束掉。- 如果是XP系統,可以使用工具Fport.exe來找到佔用8080埠的應用程式,在工作管理員中結束該程式。
- 通用版:在cmd命令視窗輸入netstat -ano,找到佔用8080埠的程式。因為沒有程式的名稱,通過PID結束程式。
- 修改Tomcat目錄下的server.xml檔案中的埠配置,找到port項,修改埠,完成後重啟Tomcat伺服器。
- 有系統自帶的IIS服務,佔用80埠。停止該服務。
- win7 自帶 World wide web publish IIS服務 預設佔用埠80 可以通過輸入services.msc找到該服務,停止即可。極個別的系統會有系統核心佔用80埠的,通過資料中提供的檔案解決該問題
Tomcat的目錄結構:
WEB應用程式
(1)WEB應用程式指供瀏覽器訪問的程式,通常也稱為WEB應用。 (2)一個web應用由多個靜態web資源和動態web資源組成,如:- html、css、js檔案 --- 靜態web資源
- Jsp檔案、java程式、支援jar包、 ---- 動態web資源
- 配置檔案等等…..
- 組成web應用的這些檔案通常我們會使用一個目錄組織,這個目錄稱之為web應用所在目錄(網站的根目錄)
使用MyEclipse配置Tomcat
- 在window下找到servers中的tomcat( window -- 選項 -- MyEclipse -- servers -- 選擇tomcat -- 選擇Enable -- 選擇tomcat根目錄)
- 選擇相應的版本後,配置本地的tomcat
- 再配置本地的JDK(可選)
- 配置成功後啟動伺服器
- 在myeclipse中建立web專案,部署到tomcat中,啟動伺服器。
- WebRoot目錄變成了虛擬路徑即訪問路徑了(虛擬路徑預設和專案名稱是相同的,不用去修改)
- 如果直接複製專案,需要修改虛擬路徑(專案上右鍵--選擇屬性 -- MyEclipse -- web 修改虛擬路徑)
- 擴充套件 window -- show view -- servers
Tomcat管理員的配置
在Tomcat中配置管理員主要是給使用者使用的。 可以在tomcat/conf/tomcat-user.xml中加入如下配置資訊。 <role rolename="manager"> <user username="admin" password="admin" roles="manager">虛擬目錄的對映方式(如何部署WEB程式)
虛擬目錄的對映有三種方式: (1)將專案複製到webapps目錄下。即讓Tomcat自動對映,Tomcat伺服器會自動管理webapps目錄下的所有的web應用,並把它對映成虛擬目錄。換句話說,Tomcat伺服器webapps目錄下的web應用,外界可以直接訪問。 (2)(通過配置虛擬路徑的方式)直接修改配置檔案,寫到tomcat/conf/server.xml中 * 找到<Host>標籤,配置到Host標籤的中間。 * 目的:通過配置,配置訪問路徑,準確找到c:\bb的檔案 *<Context docBase="資料夾的真實目錄" path="虛擬路徑(訪問路徑)"></Context> *<Context docBase="C:\bb" path="/itcast"></Context> *訪問:http://localhost:80/itcast (3)自己編寫一個配置檔案(推薦使用) *自定義xxx.xml結尾檔案,在$CATALINA_HOME/conf/[enginename]/[hostname] directory目錄下 *把xxx當成虛擬(訪問)路徑 * 在XML的檔案中編寫。 *xml檔案在哪個目錄下? *$CATALINA_HOME/conf/[enginename]/[hostname] directory * 如果找引擎的名稱和主機的名稱,在server.xml中找到分別是<engine name="引擎名稱">...</engine>和 <Host name="主機名稱"></Host> 的節點即可 *tomcat/conf/Catalina/localhost/ccc.xml *ccc.xml的檔案編寫內容如下: *<Context docBase="C:\cc"></Context> *訪問:http://localhost:80/cccWeb系統通訊詳解:
配置虛擬主機: (1) 在一個tomcat伺服器中可以放置多個網站<Host>,所謂配置虛擬主機,就是在tomcat伺服器中配置一個網站。 (2)如需要在WEB伺服器中配置一個網站,需要使用Host元素進行配置,例如:<Host name="site1" appBase="c:\app"></Host> (3)配置的主機(網站)要想被外部訪問,必須在DNS伺服器或windows系統中註冊 C:\WINDOWS\system32drivers\etc\hosts (4)預設虛擬主機DefaultHost 訪問網站全過程分析
1、在瀏覽器輸入url地址
2、訪問本機域名解析檔案 hosts ======= c:\windows\system32\drivers\etc\
3、如果本機沒有查詢到域名,查詢網路上DNS伺服器
4、域名解析後,獲得域名對應ip地址。根據ip和port訪問網路上指定主機和服務
真實開發網站過程
1、開發網站
2、將網站釋出web伺服器上 (公網ip)
3、在DNS域名解析伺服器上註冊域名,和伺服器ip繫結
實驗:在本機上搭建百度虛擬主機 =========== 注意:預設埠必須設定80
1、抓取baidu主頁
2、在c盤 新建虛擬主機目錄 c:\baidu
3、在c:\baidu下新建 百度網站目錄 website (複製網站頁面到 website目錄)
4、在conf/server.xml 配置虛擬主機
<Host name="www.baidu.com" appBase="C:\baidu"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
</Host>
5、在本機 hosts檔案新增
192.168.1.250 www.baidu.com
*** 測試 cmd中 ping www.baidu.com 測試hosts是否配置成功
6、將website配置 預設網站 在<Host> 元素內部新增<Context> 元素
<Context path="" docBase="website" />
7、將baidu.htm 配置預設歡迎頁面 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>baidu.htm</welcome-file>
</welcome-file-list>
使用MyEclipse開發動態web程式
什麼是HTTP協議?
- 客戶端連上web伺服器後,若想獲得web伺服器中的某個web資源,需遵守一定的通訊格式,http協議用於定義客戶端與web伺服器通訊的格式。
- 基於TCP連線的傳輸協議
- 預設埠是80
- 基於請求-相應模式的協議
- 通過Telnet命令 快速瞭解HTTP協議
- 安裝IE瀏覽器外掛HttpWatch,檢視IE瀏覽器通過HTTP協議獲取某個頁面
使用telnet命令演示HTTP協議
- 啟動伺服器
- cmd> telnet localhost 80回車
- telnet有一個亂碼問題 解決亂碼
- 解決 Ctrl+] 回車
- 注意:命令列中輸入的內容不能寫錯,一旦寫錯了 不支援刪除
- GET /aa/1.html HTTP/1.1
- host:localhost
- 輸入兩次回車
HTTP協議簡介
- HTTP是hypertext transfer protocol(超文字傳輸協議)的簡寫,它是TCP/IP協議的一個應用層協議,用於定義WEB瀏覽器與WEB伺服器之間交換資料的過程。
- HTTP協議是學習JAVAWEB的基石,必須深入瞭解HTTP協議 才能管理和維護一些複雜的WEB站點。
- HTTP協議的版本:HTTP/1.0 、HTTP/1.1
HTTP1.0和HTTP1.1的區別
- HTTP/1.0是連結之後,馬上斷開
- HTTP/1.1是連結之後,不會馬上斷開,還可以繼續操作,一段時間不操作後,會自動斷開。
- 通過telnet命令可以很好的演示效果
HTTP請求
客戶端連上伺服器後,向伺服器請求某個web資源,稱之為客戶端向伺服器傳送了一個HTTP請求。一個完整的HTTP請求包括以下內容: 一個請求行、若干請求頭、以及實體內容,如下所示:Web伺服器通過客戶端傳送過來的這些請求資訊,就可以確定向請求者回送什麼資源,以及根據客戶端的環境資訊採用什麼方式進行回送等。
HTTP請求的細節——請求行
請求行中的GET稱之為請求方式,請求方式有:- POST、GET、HEAD、OPTIONS、DELETE、TRACE、PUT、CONNECT
- 常用的有: GET、 POST
- 使用者如沒有設定,預設情況下瀏覽器向伺服器傳送的都是get請求,例如在瀏覽器直接輸地址訪問,點超連結訪問等都是get,使用者如想把請求方式改為post,可通過更改表單的提交方式實現。
- 如請求方式為GET方式,則可以在請求的URL地址後以?的形式帶上交給伺服器的資料,多個數據之間以&進行分隔,例如:
- GET /mail/1.html?name=abc&password=xyz HTTP/1.1
- GET方式的特點:在URL地址後附帶的引數是有限制的,其資料容量通常不能超過1K。
- 如請求方式為POST方式,則可以在請求的實體內容中向伺服器傳送資料,Post方式的特點:傳送的資料量無限制。
GET /day4/img.html HTTP/1.1 分為三個部分:請求方式、資源路徑、協議版本
HTTP請求方式定義8種,常用GET和POST兩種
GET和POST區別?
1) 區分哪些是GET請求? 哪些POST請求?
GET:在瀏覽器直接輸入URL、<a href=""> 、<form method="get" >
POST: <form method="post" >
2) GET請求資料位於請求行中 ,POST請求資料位於請求體中
GET /day4/form.html?username=zhangsan HTTP/1.1
POST /day4/form.html HTTP/1.1
...
username=lisi
3) GET請求資料在URL上顯示,所有有長度限制,通常是1kb
HTTP請求的細節——訊息頭
Accept: text/html,image/* 客戶端識別檔案型別
Accept-Charset: ISO-8859-1 客戶端字符集
Accept-Encoding: gzip 客戶端支援編碼型別 gzip 壓縮格式
Accept-Language:zh-cn 客戶端語言
Host: www.itcast.com:80 訪問伺服器地址
If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT (重要) 和Last-Modified 一起使用 控制快取
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
盜鏈:A網站直接通過連結,訪問B網站資源
防盜鏈原理,判斷請求中referer資訊
****** 使用URL 和 URLConnection 偽造客戶端
//防盜鏈
String referer = request.getHeader("referer");
if(referer!=null && referer.equals("http://localhost:8080/day03/index.html")){
// 有效
response.setContentType("text/html;charset=gbk");
response.getWriter().println("筆記本1000元");
}else{
// 無效
response.setContentType("text/html;charset=gbk");
response.getWriter().println("盜鏈真無恥!");
}
//URL偽造
URL url = new URL("http://localhost:8080/day03/referer");
URLConnection conn =url.openConnection();
conn.setRequestProperty("referer", "http://localhost/day03/index.html");
byte[] buf = new byte[1024];
InputStream is = conn.getInputStream();
int len = is.read(buf);
System.out.println(new String(buf,0,len));
3、請求體
多個數據之間用&分隔
name=value&name=value&name=value...
HTTP響應
一個HTTP響應代表伺服器向客戶端回送的資料,它包括: 一個狀態行、若干訊息頭、以及實體內容。在一個HTTP響應中,WEB伺服器通過響應向WEB客戶端描述客戶端的請求成功與否,以及它所傳送的資料型別等一些資訊,客戶端通過這些資訊,進而可以知道如何對資料進行處理。
HTTP響應的細節——狀態行
狀態行 格式:HTTP版本號 狀態碼 原因敘述<CRLF> 舉例:HTTP/1.1 200 OK 狀態碼用於表示伺服器對請求的處理結果,它是一個三位的十進位制數,響應狀態碼分為5類,如下所示:狀態碼 | 含義 |
100~199 | 表示成功接收請求,要求客戶端繼續提交下一次請求才能完成整個處理過程 |
200~299 | 表示成功接收請求並已完成整個處理過程,常用200 |
300~399 | 為完成請求,客戶需進一步細化請求。例如,請求的資源已經移動一個新地址,常用302、307和304 |
400~499 | 客戶端的請求有錯誤,常用404 |
500~599 | 伺服器端出現錯誤,常用500 |
HTTP/1.1 200 OK 協議版本、狀態碼、描述資訊 Informational 1xx 資訊不足, 請求無法處理 Successful 2xx 請求成功處理 Redirection 3xx 請求已經處理,還需要客戶端有進一步操作 Client Error 4xx 客戶端錯誤 Server Error 5xx 伺服器端錯誤 200:請求成功處理,一切OK 302:請求重定向(A找B借錢,B通知A找C借錢,A找C借錢)A: 客戶端 B、C:伺服器 304:伺服器端資源沒有改動,通知客戶端查詢本地快取 404:客戶端訪問資源不存在 500:伺服器內部出錯 HTTP響應細節——常用響應頭
3) gzip壓縮
工具-- internet選項 --- 設定 --檢視檔案
+ 0.000! 0.097394 7553GET 200html http://localhost/
配置tomcat/conf/server.xml 在 Connector中配置 壓縮
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443“ compressableMimeType="text/html,text/xml,text/plain" compression="on"/>
+ 0.0000.093 3942715 GET200 htmlhttp://localhost/
4) Tomcat預設快取策略 If-Modified-Since Last-Modified 結合304 實現
5) 禁用快取
Expires: -1
Cache-Control: no-cache
Pragma: no-cache
防止瀏覽器不相容,如果網頁禁用快取後,不會在 工具-- internet選項 --- 設定 --檢視檔案 產生快取檔案