一、常見軟件系統體系結構B/S、C/S
1. C/S
- C/S結構即客戶端/服務器(Client/Server),例如QQ;
- 需要編寫服務器端程序,以及客戶端程序,例如我們安裝的就是QQ的客戶端程序;
- 缺點:軟件更新時需要同時更新客戶端和服務器端兩端,比較麻煩;
- 優點:安全性比較好。
2. B/S
- B/S結構即瀏覽器/服務器(Browser/Server);
- 優點:只需要編寫服務器端程序;
- 缺點:安全性較差。
二、Web資源與Web服務器
1. Web資源
- html:靜態資源;
- JSP/Servlet :動態資源。
當然,除了JavaWeb程序,還有其他Web程序,例如:ASP、PHP等。
2. Web服務器
Web服務器的作用是接收客戶端的請求,給客戶端作出響應。
對於JavaWeb程序而已,還需要有JSP/Servlet容器,JSP/Servlet容器的基本功能是把動態資源轉換成靜態資源。
我們需要使用的是Web服務器和JSP/Servlet容器,通常這兩者會集於一身。下面是對JavaWeb服務器:
- Tomcat(Apache):當前應用最廣的JavaWeb服務器;
- JBoss(Redhat紅帽):支持JavaEE,應用比較廣;EJB容器;
- GlassFish(Orcale):Oracle開發JavaWeb服務器,應用不是很廣;
- Resin(Caucho):支持JavaEE,應用越來越廣;
- Weblogic(Orcale):要錢的!支持JavaEE,適合大型項目;
- Websphere(IBM):要錢的!支持JavaEE,適合大型項目;
三、Tomcat
1. Tomcat概述
2. 安裝、啟動、配置Tomcat
下載Tomcat可以到http://tomcat.apache.org下載。
Tomcat分為安裝版和解壓版:
- 安裝版:一台電腦上只能安裝一個Tomcat;
- 解壓版:無需安裝,解壓即可用,解壓多少份都可以,所以我們選擇解壓版。
3. 啟動和關閉Tomcat
在啟動Tomcat之前,我們必須要配置環境變量:
- JAVA_HOME:必須先配置JAVA_HOME,因為Tomcat啟動需要使用JDK;
- CATALANA_HOME:如果是安裝版,那么還需要配置這個變量,這個變量用來指定Tomcat的安裝路徑,例如:F:\apache-tomcat-7.0.42。
- 啟動:進入%CATALANA_HOME%\bin目錄,找到startup.bat ,雙擊即可;
- 關閉:進入%CATALANA_HOME%\bin目錄,找到shutdown.bat,雙擊即可;
startup.bat會調用catalina.bat,而catalina.bat會調用setclasspath.bat,setclasspath.bat會使用JAVA_HOME環境變量,所以我們必須在啟動Tomcat之前把JAVA_HOME配置正確。
啟動問題:點擊startup.bat后窗口一閃即消失:檢查JAVA_HOME環境變量配置是否正確;
4. 配置端口號
打開%CATALANA_HOME%\conf\server.xml文件:
http默認端口號為80,也就是說在URL中不給出端口號時就表示使用80端口。當然你也可以修改為其它端口號。
當把端口號修改為80后,在瀏覽器中只需要輸入:http://localhost就可以訪問Tomcat主頁了。
5. Tomcat的目錄結構

- bin:該目錄下存放的是二進制可執行文件,如果是安裝版,那么這個目錄下會有兩個exe文件:tomcat6.exe、tomcat6w.exe,前者是在控制台下啟動Tomcat,后者是彈出UGI窗口啟動Tomcat;如果是解壓版,那么會有startup.bat和shutdown.bat文件,startup.bat用來啟動Tomcat,但需要先配置JAVA_HOME環境變量才能啟動,shutdawn.bat用來停止Tomcat;
-
conf:這是一個非常非常重要的目錄,這個目錄下有四個最為重要的文件:
- server.xml:配置整個服務器信息。例如修改端口號,添加虛擬主機等;下面會詳細介紹這個文件;
- tomcatusers.xml:存儲tomcat用戶的文件,這里保存的是tomcat的用戶名及密碼,以及用戶的角色信息。可以按着該文件中的注釋信息添加tomcat用戶,然后就可以在Tomcat主頁中進入Tomcat Manager頁面了;
- web.xml:部署描述符文件,這個文件中注冊了很多MIME類型,即文檔類型。這些MIME類型是客戶端與服務器之間說明文檔類型的,如用戶請求一個html網頁,那么服務器還會告訴客戶端瀏覽器響應的文檔是text/html類型的,這就是一個MIME類型。客戶端瀏覽器通過這個MIME類型就知道如何處理它了。當然是在瀏覽器中顯示這個html文件了。但如果服務器響應的是一個exe文件,那么瀏覽器就不可能顯示它,而是應該彈出下載窗口才對。MIME就是用來說明文檔的內容是什么類型的;
- context.xml:對所有應用的統一配置,通常我們不會去配置它;
- lib:Tomcat的類庫,里面是一大堆jar文件。如果需要添加Tomcat依賴的jar文件,可以把它放到這個目錄中,當然也可以把應用依賴的jar文件放到這個目錄中,這個目錄中的jar所有項目都可以共享之,但這樣你的應用放到其他Tomcat下時就不能再共享這個目錄下的Jar包了,所以建議只把Tomcat需要的Jar包放到這個目錄下;
- logs:這個目錄中都是日志文件,記錄了Tomcat啟動和關閉的信息,如果啟動Tomcat時有錯誤,那么異常也會記錄在日志文件中;
- temp:存放Tomcat的臨時文件,這個目錄下的東西可以在停止Tomcat后刪除;
- webapps:存放web項目的目錄,其中每個文件夾都是一個項目;如果這個目錄下已經存在了目錄,那么都是tomcat自帶的。項目。其中ROOT是一個特殊的項目,在地址欄中沒有給出項目目錄時,對應的就是ROOT項目。http://localhost:8080/examples,進入示例項目。其中examples就是項目名,即文件夾的名字;
- work:運行時生成的文件,最終運行的文件都在這里。通過webapps中的項目生成的!可以把這個目錄下的內容刪除,再次運行時會生再次生成work目錄。當客戶端用戶訪問一個JSP文件時,Tomcat會通過JSP生成Java文件,然后再編譯Java文件生成class文件,生成的java和class文件都會存放到這個目錄下;
- LICENSE:許可證;
- NOTICE:說明文件;
四、Web應用
靜態網站:
- 在webapps目錄下創建一個目錄(命名必須不包含中文和空格),這個目錄稱之為項目目錄;
- 在項目目錄下創建一個html文件;
動態網站:
- 在webapps目錄下創建一個項目目錄;
- 在項目目錄下創建如下內容:
- WEB-INF目錄:在WEB-INF目錄下創建web.xml文件(web.xml文件的內容,我們可以去其他項目中借!)
- 創建靜態或動態頁面;
1. 創建靜態應用
- 在webapps下創建一個hello目錄;
- 在webapps\hello\下創建index.html;
- 啟動tomcat;
- 打開瀏覽器訪問http://localhost:8080/hello/index.html
index.html
1 <html> 2 <head> 3 <title>hello</title> 4 </head> 5 <body> 6 <h1>Hello World!</h1> 7 </body> 8 </html>
2. 創建動態應用
- 在webapps下創建hello1目錄;
- 在webapps\hello1\下創建WEB-INF目錄;
- 在webapps\hello1\WEB-INF\下創建web.xml;
- 在webapps\hello1\下創建index.html。
- 打開瀏覽器訪問http://localhost:8080/hello/index.html
web.xml
1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app version="2.5" 3 xmlns="http://java.sun.com/xml/ns/javaee" 4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 5 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 6 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 7 </web-app>
完整的Web應用還需要在WEB-INF目錄下創建:
- classes;
- lib目錄;
webapps
|- hello
|-index.html
|-WEB-INF
|-web.xml
|-classes
|-lib
hello:應用目錄,hello就是應用的名稱;
- index.html:應用資源。應用下可以有多個資源,例如css、js、html、jsp等,也可以把資源放到文件夾中,例如:hello\html\index.html,這時訪問URL為:http://localhost:8080/hello/html/index.html;
- WEB-INF:這個目錄名稱必須是大寫,這個目錄下的東西是無法通過瀏覽器直接訪問的,也就是說放到這里的東西是安全的;
- web.xml:應用程序的部署描述符文件,可以在該文件中對應用進行配置,例如配置應用的首頁:
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
- classes:存放class文件的目錄;
- lib:存放jar包的目錄;
3. 配置外部應用
原來我們的項目放到webapps下,現在我放到外面,也希望tomcat可以找到它!
也可以把應用放到Tomcat之外,這就是外部應用了。例如我們把上面寫的hello應用從webapps目錄中剪切到C盤下,即C:/hello。現在hello這個Web應用已經不在Tomcat中了,這時我們需要在tomcat中配置外部應用的位置,配置的方式一共有兩種:
- conf/server.xml:打開server.xml文件,找到<Host>元素,在其中添加<Context>元素,代碼如下:
server.xml
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Context path="hello" docBase="C:/hello"/> </Host>
1) path:指定當前應用的名稱;
2) docBase:指定應用的物理位置;
3) 瀏覽器訪問路徑:http://localhost:8080/hello/index.html。
- conf/catalana/localhost:在該目錄下創建hello.xml文件,在該文件中編寫<Context>元素,代碼如下:
<Context docBase="C:/hello"/>
1) 文件名:指定當前應用的名稱;
2) docBase:指定應用的物理位置;
3) 瀏覽器訪問路徑:http://localhost:8080/hello/index.html。
4. 理解server.xml
<Server>
<Servier>
<Connector>
<Engine>
<Host>
<Context>
- <Server>:根元素,表示整個服務器的配置信息;
- <Service>:<Server>的子元素,在<Server>中只能有一個<Service>元素,它表示服務;
- <Connector>:<Service>的子元素,在<Service>中可以有N個<Connector>元素,它表示連接。
- <Engine>:<Service>的子元素,在<Service>中只能有一<Engine>元素,該元素表示引擎,它是<Service>組件的核心。
- <Host>:<Engine>的子元素,在<Engine>中可以有N個<Host>元素,每個<Host>元素表示一個虛擬主機。所謂虛擬主機就像是真的主機一樣,每個主機都有自己的主機名和項目目錄。例如<Host name=”localhost” appBase=”webapps”>表示主機名為localhost,這個主機的項目存放在webapps目錄中。訪問這個項目下的主機時,需要使用localhost主機名,項目都存放在webapps目錄下。
- <Context>:<Host>元素的子元素,在<Host>中可以有N個<Context>元素,每個<Context>元素表示一個應用。如果應用在<Host>的appBase指定的目錄下,那么可以不配置<Context>元素,如果是外部應用,那么就必須配置<Context>。如果要為應用指定資源,也需要配置<Context>元素。
我們可以把<Server>看作是一個大酒店:
- <Service>:酒店的服務部門;
- <Connector>:服務員;
- <Engine>:后廚;
- <Host>:后廚中的一個區,例如川菜區是一個<Host>、粵菜區是一個<Host>;
- <Context>:后廚的一個廚師。
用戶發出一個請求:http://localhost:8080/hello/index.jsp。發現是http/1.1協議,而且還是8080端口,所以就交給了處理這一請求的“服務員(處理HTTP請求的<Connector>)”,“服務員”再把請求交給了“后廚(<Engine>)”,因為請求是要一盤水煮魚,所以由“川菜區(<Host>)”負責,因為“大老王師傅<Context>”做水煮魚最地道,所以由它完成。
- <Connector>:關心請求中的http、和8080;
- < Host>:關心localhost;
- <Context>:關心hello
我們的目標是,在瀏覽器中輸出:http://www.baidu.com就可以訪問我們的項目。
完成這一目標,我們需要做三件事:
- 修改端口號為80;
- 在本機上可以解析域名為127.0.0.1,這需要修改C:\WINDOWS\system32\drivers\etc\hosts文件,添加對http://www.baidu.com和127.0.01的綁定關系;
- 在server.xml文件中添加一個<Host>(主機)。
1) 修改端口號為80
2) 綁定http://www.baidu.com和127.0.01的綁定關系
127.0.0.1 www.baidu.com
3) server.xml文件中添加一個<Host>
<Host name="www.baidu.com" appBase="F:/Mywebapps" unpackWARs="true" autoDeploy="true"> </Host>
name=”www.baidu.com”:指定虛擬主機名為www.baidu.com;
appBase=”F:/Mywebapps”:指定當前虛擬主機的應用程序存放目錄為F:/Mywebapps。
在Mywebapps目錄下創建名為ROOT的應用,因為一個主機只可以有一個名為ROOT的應用,名為ROOT的應用在瀏覽器中訪問是可以不給出應用名稱。
請注意,只有本機可以通過http://www.baidu.com來訪問,而其他電腦不可以!
五、MyEclipse創建JavaWeb應用
1. 配置Tomcat
使用MyEclipse配置服務器后,就可以使用MyEclipse來啟動和停止服務器了。當然,你需要先安裝好服務器(Tomcat),才能配置。
MyEclipse自帶了一個Tomcat,強烈建議不要使用它。所以,我們需要先把MyEclipse自帶的Tomcat關閉,然后再來配置我們自己的Tomcat。
- 關閉MyEclipse自帶Tomcat。
在工具欄中找到,點擊下箭頭,點擊Configure Server Connector
彈出對話框
- 配置我們自己的Tomcat


使用MyEclipse啟動Tomcat
2. 創建JavaWeb應用




3. 啟動Tomcat


上面兩種方式都可以啟動tomcat
4. 關閉tomcat
5. 發布項目到tomcat的webapps目錄
項目發布后,就是把項目的WebRoot目錄copy到Tomcat的webapps目錄,並把WebRoot重命名為項目名稱,即hello。所以在Tomcat的webapps下會多出一個文件夾hello。
6. 打war包
JavaSE程序可以打包成Jar包,而JavaWeb程序可以打包成war包。然后把war發布到Tomcat的webapps目錄下,Tomcat會在啟動時自動解壓war包。

六、HTTP協議
協議:協議的甲乙雙方,就是客戶端(瀏覽器)和服務器!
理解成雙方通信的格式!
- 請求協議;
- 響應協議;
1. 安裝HttpWatch
HttpWatch是專門為IE瀏覽器提供的,用來查看HTTP請求和響應內容的工具。而FireFox上需要安裝FireBug軟件。如果你使用的是Chrome,那么就不用自行安裝什么工具了,因為它自身就有查看請求和響應內容的功能!
HttpWatch和FireBug這些工具對瀏覽器而言不是必須的,但對我們開發者是很有幫助的,通過查看HTTP請求響應內容,可以使我們更好的學習HTTP協議。
2. HTTP概述
HTTP(hypertext transport protocol),即超文本傳輸協議。這個協議詳細規定了瀏覽器和萬維網服務器之間互相通信的規則。
HTTP就是一個通信規則,通信規則規定了客戶端發送給服務器的內容格式,也規定了服務器發送給客戶端的內容格式。其實我們要學習的就是這個兩個格式!客戶端發送給服務器的格式叫“請求協議”;服務器發送給客戶端的格式叫“響應協議”。
3. 請求協議
請求協議的格式如下:
- 請求首行;
- 請求頭信息;
- 空行;
- 請求體
瀏覽器發送給服務器的內容就這個格式的,如果不是這個格式服務器將無法解讀!在HTTP協議中,請求有很多請求方法,其中最為常用的就是GET和POST。
4. GET請求
打開IE,在訪問hello項目的index.jsp之間打開HttpWatch,並點擊“Record”按鈕。然后訪問index.jsp頁面。查看請求內容如下:
GET /hello/index.jsp HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn,zh;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: GB2312,utf-8;q=0.7,*;q=0.7
Connection: keep-alive
Cookie: JSESSIONID=369766FDF6220F7803433C0B2DE36D98
- GET /hello/index.jsp HTTP/1.1:GET請求,請求服務器路徑為/hello/index.jsp,協議為1.1;
- Host:localhost:請求的主機名為localhost;
- User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0:與瀏覽器和OS相關的信息。有些網站會顯示用戶的系統版本和瀏覽器版本信息,這都是通過獲取User-Agent頭信息而來的;
- Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8:告訴服務器,當前客戶端可以接收的文檔類型,其實這里包含了*/*,就表示什么都可以接收;
- Accept-Language: zh-cn,zh;q=0.5:當前客戶端支持的語言,可以在瀏覽器的工具à選項中找到語言相關信息;
- Accept-Encoding: gzip, deflate:支持的壓縮格式。數據在網絡上傳遞時,可能服務器會把數據壓縮后再發送;
- Accept-Charset: GB2312,utf-8;q=0.7,*;q=0.7:客戶端支持的編碼;
- Connection: keep-alive:客戶端支持的鏈接方式,保持一段時間鏈接,默認為3000ms;
- Cookie: JSESSIONID=369766FDF6220F7803433C0B2DE36D98:因為不是第一次訪問這個地址,所以會在請求中把上一次服務器響應中發送過來的Cookie在請求中一並發送去過;這個Cookie的名字為JSESSIONID,然后在講會話是講究它!
5. POST請求
為了演示POST請求,我們需要修改index.jsp頁面,即添加一個表單:
1 <form action="" method="post"> 2 關鍵字:<input type="text" name="keyword"/> 3 <input type="submit" value="提交"/> 4 </form>
打開HttpWatch,輸入hello后點擊提交,查看請求內容如下:
POST /hello/index.jsp HTTP/1.1
Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, */*
Referer: http://localhost:8080/hello/index.jsp
Accept-Language: zh-cn,en-US;q=0.5
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
Host: localhost:8080
Content-Length: 13
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: JSESSIONID=E365D980343B9307023A1D271CC48E7D
keyword=hello
POST請求是可以有體的,而GET請求不能有請求體。
- Referer: http://localhost:8080/hello/index.jsp:請求來自哪個頁面,例如你在百度上點擊鏈接到了這里,那么Referer:http://www.baidu.com;如果你是在瀏覽器的地址欄中直接輸入的地址,那么就沒有Referer這個請求頭了;
- Content-Type: application/x-www-form-urlencoded:表單的數據類型,說明會使用url格式編碼數據;url編碼的數據都是以“%”為前綴,后面跟隨兩位的16進制,例如“傳智”這兩個字使用UTF-8的url編碼用為“%E4%BC%A0%E6%99%BA”;
- Content-Length:13:請求體的長度,這里表示13個字節。
- keyword=hello:請求體內容!hello是在表單中輸入的數據,keyword是表單字段的名字。
Referer請求頭是比較有用的一個請求頭,它可以用來做統計工作,也可以用來做防盜鏈。
統計工作:我公司網站在百度上做了廣告,但不知道在百度上做廣告對我們網站的訪問量是否有影響,那么可以對每個請求中的Referer進行分析,如果Referer為百度的很多,那么說明用戶都是通過百度找到我們公司網站的。
防盜鏈:我公司網站上有一個下載鏈接,而其他網站盜鏈了這個地址,例如在我網站上的index.html頁面中有一個鏈接,點擊即可下載JDK7.0,但有某個人的微博中盜鏈了這個資源,它也有一個鏈接指向我們網站的JDK7.0,也就是說登錄它的微博,點擊鏈接就可以從我網站上下載JDK7.0,這導致我們網站的廣告沒有看,但下載的卻是我網站的資源。這時可以使用Referer進行防盜鏈,在資源被下載之前,我們對Referer進行判斷,如果請求來自本網站,那么允許下載,如果非本網站,先跳轉到本網站看廣告,然后再允許下載。
6. 響應協議
6.1 響應內容
響應協議的格式如下:
- 響應首行;
- 響應頭信息;
- 空行;
- 響應體。
響應內容是由服務器發送給瀏覽器的內容,瀏覽器會根據響應內容來顯示。
HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Content-Type: text/html;charset=UTF-8 Content-Length: 724 Set-Cookie: JSESSIONID=C97E2B4C55553EAB46079A4F263435A4; Path=/hello Date: Wed, 25 Sep 2012 04:15:03 GMT <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="http://localhost:8080/hello/"> <title>My JSP 'index.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <form action="" method="post"> 關鍵字:<input type="text" name="keyword"/> <input type="submit" value="提交"/> </form> </body> </html>
- HTTP/1.1 200 OK:響應協議為HTTP1.1,狀態碼為200,表示請求成功,OK是對狀態碼的解釋;
- Server: Apache-Coyote/1.1:服務器的版本信息;
- Content-Type: text/html;charset=UTF-8:響應體使用的編碼為UTF-8;
- Content-Length: 724:響應體為724字節;
- Set-Cookie: JSESSIONID=C97E2B4C55553EAB46079A4F263435A4; Path=/hello:響應給客戶端的Cookie;
- Date: Wed, 25 Sep 2012 04:15:03 GMT:響應的時間,這可能會有8小時的時區差;
6.2 響應碼
響應頭對瀏覽器來說很重要,它說明了響應的真正含義。例如200表示響應成功了,302表示重定向,這說明瀏覽器需要再發一個新的請求。
- 200:請求成功,瀏覽器會把響應體內容(通常是html)顯示在瀏覽器中;
- 404:請求的資源沒有找到,說明客戶端錯誤的請求了不存在的資源;
- 500:請求資源找到了,但服務器內部出現了錯誤;
- 302:重定向,當響應碼為302時,表示服務器要求瀏覽器重新再發一個請求,服務器會發送一個響應頭Location,它指定了新請求的URL地址;
- 304:當用戶第一次請求index.html時,服務器會添加一個名為Last-Modified響應頭,這個頭說明了index.html的最后修改時間,瀏覽器會把index.html內容,以及最后響應時間緩存下來。當用戶第二次請求index.html時,在請求中包含一個名為If-Modified-Since請求頭,它的值就是第一次請求時服務器通過Last-Modified響應頭發送給瀏覽器的值,即index.html最后的修改時間,If-Modified-Since請求頭就是在告訴服務器,我這里瀏覽器緩存的index.html最后修改時間是這個,您看看現在的index.html最后修改時間是不是這個,如果還是,那么您就不用再響應這個index.html內容了,我會把緩存的內容直接顯示出來。而服務器端會獲取If-Modified-Since值,與index.html的當前最后修改時間比對,如果相同,服務器會發響應碼304,表示index.html與瀏覽器上次緩存的相同,無需再次發送,瀏覽器可以顯示自己的緩存頁面,如果比對不同,那么說明index.html已經做了修改,服務器會響應200。
響應頭:Last-Modified:最后的修改時間;
請求頭:If-Modified-Since:把上次請求的index.html的最后修改時間還給服務器;
狀態碼:304,比較If-Modified-Since的時間與文件真實的時間一樣時,服務器會響應304,而且不會有響正文,表示瀏覽器緩存的就是最新版本!
6.3 其他響應頭
告訴瀏覽器不要緩存的響應頭:
- Expires: -1;
- Cache-Control: no-cache;
- Pragma: no-cache;
自動刷新響應頭,瀏覽器會在3秒之后請求http://www.baidu.com:
- Refresh: 3;url=http://www.baidu.com
6.4 HTML中指定響應頭
在HTMl頁面中可以使用<meta http-equiv="" content="">來指定響應頭,例如在index.html頁面中給出<meta http-equiv="Refresh" content="3;url=http://www.baidu.com">,表示瀏覽器只會顯示index.html頁面3秒,然后自動跳轉到http://www.baidu.com。