客戶端瀏覽器和服務(wù)器Tomcat要進行基本的請求和響應(yīng)的處理。
其實瀏覽器和服務(wù)器通信的數(shù)據(jù)的格式已經(jīng)使用協(xié)議進行固定好了,只要雙方發(fā)送固定格式的數(shù)據(jù),那么就可以完成基本的通信。
如果開發(fā)者需要查看這樣的數(shù)據(jù)格式,那么就需要安裝一個瀏覽器的HTTP協(xié)議相關(guān)的插件。
如果要深入的學(xué)習(xí)瀏覽器和服務(wù)器通信的數(shù)據(jù),那么需要詳細(xì)的掌握他們之間發(fā)送的數(shù)據(jù)內(nèi)容。
1 請求信息
GET / HTTP/1.1 ? 請求行Accept: */*Accept-Language: zh-cn,en-US;q=0.5 ? 請求頭User-Agent: Mozilla/4.0Accept-Encoding: gzip, deflateHost: www.sina.com.cnConnection: Keep-Alive ? 空白行uname=jack&upsw=jnb ? 請求體 提交的POST數(shù)據(jù)
2. 請求行
請求方式 GET和POST
請求資源 一般是以/開頭就是需要訪問的網(wǎng)站名和頁面的名
協(xié)議信息 協(xié)議名/版本
2. 請求頭
請求頭是瀏覽器發(fā)送給服務(wù)器,那么就是瀏覽器想通知服務(wù)器做一些事情。
MIME類型指定是的什么樣的文件格式需要使用什么樣的應(yīng)用打開。
Accept: text/html,image/* ? 通知服務(wù)器瀏覽器接收的數(shù)據(jù)類型MIMEAccept-Charset: ISO-8859-1 ? 通知服務(wù)器提交數(shù)據(jù)的編碼方式Accept-Encoding: gzip,comPRess ? 通知服務(wù)器瀏覽器支持?jǐn)?shù)據(jù)的壓縮Accept-Language: en-us,zh-cn ? 通知服務(wù)器瀏覽器當(dāng)前的語言信息Host: www.it315.org:80 ? 通知服務(wù)器要請求的主機名If-Modified-Since: Tue, 11 Jul 2000 18:23:51 ? 通知服務(wù)器資源的最新修改時間Referer: http://www.it315.org/index.jsp ? 通知服務(wù)器本次請求來自于哪一個URLUser-Agent: Mozilla/4.0 ? 通知服務(wù)器客戶端使用的瀏覽器內(nèi)核Cookie ? 通知服務(wù)器請求中帶有Cookie數(shù)據(jù)Connection: close/Keep-Alive ? 通知服務(wù)器可以保持建立好的連接Date: Tue, 11 Jul 2000 18:23:51 GMT ? 通知服務(wù)器發(fā)送請求的時間
請求是由瀏覽器發(fā)送的。那么我們程序員一般是修改不了這些請求頭數(shù)據(jù)。但是在特定的情況下需要修改請求的頭信息,那么此時就需要使用到JavaSE的網(wǎng)絡(luò)編程知識的一些基礎(chǔ)。
URL 主要使用該類來描述瀏覽器地址欄中的地址信息。
HttpURLConnection 主要描述的是客戶端和服務(wù)器建立的連接對象
setRequestProperty() 可以設(shè)置請求頭信息
3. 請求體
主要包含的是POST提交的數(shù)據(jù)。
4.多學(xué)一招: HTTP1.0和1.1的區(qū)別是什么。
HTTP1.0 該協(xié)議在發(fā)送請求的時候沒有Host字段,瀏覽器為每一次請求建立獨立的連接。
思考:如果需要瀏覽的頁面中有3個圖片。那么請問發(fā)送了幾次請求?
4 = 1次文本+3次圖片
HTTP1.1 提供了一個必須的Host字段,而且建立好一次連接之后可以重復(fù)使用。提高用戶的上網(wǎng)體驗。
5 響應(yīng)信息
HTTP/1.1 200 OK ? 響應(yīng)行Server: Apache-Coyote/1.1Set-Cookie: JsessionID=A8FB52…; Path=/day04 ? 響應(yīng)頭Content-Type: text/html;charset=ISO-8859-1Content-Length: 620Date: Fri, 11 Jan 2013 07:42:39 GMT ? 空白行This is my JSP page. ? 響應(yīng)體
1. 響應(yīng)行
協(xié)議和版本
響應(yīng)狀態(tài)碼 200 處理成功 302和304需要細(xì)化請求 404資源不存在 500服務(wù)器失敗
狀態(tài)碼說明信息 OK
2. 響應(yīng)頭
Location: http://www.it315.org/index.jsp ? 通知瀏覽器需要進一步細(xì)化請求的路勁Server:apache tomcat ? 通知瀏覽器服務(wù)器的名Content-Encoding: gzip ? 通知瀏覽器響應(yīng)數(shù)據(jù)類型是壓縮格式Content-Length: 80 ? 通知瀏覽器數(shù)據(jù)的長度Content-Language: zh-cn ? 通知瀏覽器語言Content-Type: text/html; charset=GB2312 ? 通知瀏覽器內(nèi)容類型Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT ? 通知瀏覽器資源最后一次修改的時間Refresh: 1;url=http://www.it315.org ? 通知瀏覽器自動定時刷新Content-Disposition: attachment; filename=a.zip ? 通知瀏覽器數(shù)據(jù)的處理方式Transfer-Encoding: chunked ? 通知瀏覽器數(shù)據(jù)是否切塊Set-Cookie:SS=Q0=5Lb_nQ; path=/search ? 通知瀏覽器需要使用Cookie存儲數(shù)據(jù)Expires: -1 ? 通知瀏覽器不要緩存頁面Cache-Control: no-cache Pragma: no-cache Connection: close/Keep-Alive ? 通知瀏覽器服務(wù)器已經(jīng)保持了連接Date: Tue, 11 Jul 2000 18:23:51 GMT ? 通知瀏覽器服務(wù)器處理的時間
3. 響應(yīng)體
服務(wù)器發(fā)送給瀏覽器需要的資源數(shù)據(jù)
案例一: 使用動態(tài)網(wǎng)頁開發(fā)技術(shù)實現(xiàn)圖片的下載public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException { // 通知瀏覽器以下載的方式打開美女 response.setHeader("content-disposition", "attachment;filename=mv.jpg"); // 獲取圖片資源 InputStream in = this.getServletContext().getResourceAsStream("/0001.jpg"); // 獲取輸出到頁面的輸出流對象 OutputStream out = response.getOutputStream(); byte [] bs = new byte[1024]; int len = 0; while((len = in.read(bs)) != -1){ out.write(bs, 0, len); } // 釋放資源 in.close(); out.close(); }總結(jié):HTTP協(xié)議本身在傳遞數(shù)據(jù)的時候,數(shù)據(jù)時明碼傳輸?shù)摹H绻脩粜枰獋鬏斠恍╇[私的數(shù)據(jù),那么需要進行加密。
方式1:使用各種語言支持的加密方式。
方式2:建立客戶端和服務(wù)器端加密的通信連接。
HTTPS協(xié)議加密的HTTP協(xié)議,客戶端瀏覽器和服務(wù)器之間會建立一個加密的通道,在該通道下傳遞的數(shù)據(jù)都是安全的。
如:在線交易、網(wǎng)上銀行。
那么我們就需要在Tomcat中實現(xiàn)HTTPS的搭建。
1. 生成證書
keytool -genkey -alias tomcat -keyalg RSA -keystore d:/tomcat.keystore
2. 在tomcat中引入證書
配置server.xml文件如下
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="d:/tomcat.keystore"
keystorePass="123456"
/>
3. 使用瀏覽器建立安全的連接https://localhost:8443
問題:
沒有配置java_home環(huán)境變量。java_home=D:/jdk6.0
如果啟動的時候發(fā)現(xiàn)錯誤信息后直接關(guān)閉了窗口,那么請查看日志信息文件。如果發(fā)現(xiàn)時地址沖突了,那么修改server.xml文件中的8080端口即可。
新聞熱點
疑難解答