日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Tomcat服務(wù)器常用配置和HTTP簡(jiǎn)介

系統(tǒng) 2287 0

Web服務(wù)器常用配置
1.Web系統(tǒng)采用B/S結(jié)構(gòu)通信的:Browser --- Server
1)瀏覽器向服務(wù)器發(fā)送訪問(wèn)目標(biāo)資源請(qǐng)求(請(qǐng)求)
2)服務(wù)器根據(jù)請(qǐng)求的目標(biāo)資源路徑,在服務(wù)器端進(jìn)行查找(請(qǐng)求查找)
3)服務(wù)器會(huì)將查找結(jié)果返回給客戶端瀏覽器(響應(yīng))
通信結(jié)構(gòu)圖:

Tomcat服務(wù)器常用配置和HTTP簡(jiǎn)介

2.什么是Web服務(wù)器?
包括硬件環(huán)境和軟件環(huán)境,在網(wǎng)絡(luò)中安裝web服務(wù)器軟件的計(jì)算機(jī)
3.Tomcat服務(wù)器安裝和配置
1)在Apache官網(wǎng)上下載tomcat服務(wù)器
*一般采用zip格式的(可直接解壓使用)
2)解壓縮tomcat
*不要使用含有空格和中文目錄的文件夾
3)啟動(dòng)tomcat之前,配置JAVA_HOME環(huán)境變量 ---- 配置JDK安裝路徑
*注意JAVA_HOME使用下劃線
4)啟動(dòng)tomcat服務(wù)器
雙擊bin/startup.bat(如果使用linux雙擊bin/startup.sh)
輸入http://localhost:8080/ 訪問(wèn)tomcat網(wǎng)站主頁(yè)
5)因?yàn)榫W(wǎng)站通過(guò)HTTP協(xié)議訪問(wèn),HTTP協(xié)議默認(rèn)端口80 ---- 修改tomcat服務(wù)器啟動(dòng)端口80
修改conf/server.xml
<Connector port="80" protocol="HTTP/1.1"
?????????????? connectionTimeout="20000"
?????????????? redirectPort="8443" />? 將8080修改為80
訪問(wèn)localhost:80端口? ----- 省略端口寫(xiě)法 http://localhost訪問(wèn)站點(diǎn)
4.tomcat啟動(dòng)問(wèn)題
1)窗口一閃然后消失 ----- 編輯startup.bat,在文件末尾加入pause指令,再次運(yùn)行,讀取錯(cuò)誤原因,根據(jù)原因解決
*JAVA_HOME路徑必須是JDK不可以是JRE
2)端口占用問(wèn)題
發(fā)現(xiàn)端口被占用后,通過(guò)cmd命令行,查看占用端口進(jìn)程 ----? netstat –ano
在任務(wù)管理器關(guān)閉該進(jìn)程
3)CATALINA_HOME環(huán)境變量
指定tomcat安裝位置(該環(huán)境變量可以不配置) ----? 如果配置出錯(cuò),tomcat將無(wú)法啟動(dòng)

5.各種版本對(duì)應(yīng)問(wèn)題
Tomcat版本?? ?Servlet/JSP版本?? ?JavaEE版本?? ?運(yùn)行環(huán)境
4.1?? ??? ??? ?  2.3/1.2?? ??? ??? ?1.3?? ??? ?  ? JDK1.3
5.5?? ??? ??? ?  2.4/2.0?? ??? ??? ?1.4?? ??? ?  ? JDK1.4
6.0?? ??? ??? ?  2.5/2.1?? ??? ??? ?5.0?? ??? ?  ? JDK5.0
7.0?? ??? ??? ?  3.0/2.2?? ??? ??? ?6.0?? ??? ?  ? JDK6.0
Tomcat 支持Servlet和JSP規(guī)范,Servlet技術(shù)屬于JavaEE規(guī)范?
* 隨著javaEE 版本提升 -- Servlet版本提升 --- 運(yùn)行Servlet環(huán)境Tomcat版本提升?
* tomcat運(yùn)行需要JDK 環(huán)境版本?

如果編寫(xiě) JavaEE5.0工程 需要哪個(gè)版本tomcat可以運(yùn)行? 6.0 7.0

6.Tomcat目錄結(jié)構(gòu)
bin --- 存放tomcat啟動(dòng)關(guān)閉程序
conf --- 存放tomcat配置文件
lib --- tomcat運(yùn)行需要jar包
logs --- tomcat日志文件
webapps --- 網(wǎng)站發(fā)布目錄(所有網(wǎng)站可以發(fā)布到該目錄)
work --- 存放工程運(yùn)行時(shí),產(chǎn)生數(shù)據(jù)文件(JSP翻譯Servlet、Session持久化數(shù)據(jù))
7.網(wǎng)站的標(biāo)準(zhǔn)目錄結(jié)構(gòu)
站點(diǎn)根目錄
??? -------? 靜態(tài)web資源、jsp
??? -------? WEB-INF目錄
????????????????? -------? classes目錄 (保存,class文件)
????????????????? --------? lib? 目錄 (當(dāng)前網(wǎng)站需要jar包)?
????????????????? -------- web.xml (網(wǎng)站配置文件)
* WEB-INF目錄不是必須的,沒(méi)有java動(dòng)態(tài)程序代碼, 可以沒(méi)有WEB-INF 目錄
* WEB-INF目錄下資源不能被瀏覽器直接訪問(wèn)
8.網(wǎng)站開(kāi)發(fā)好后,如果想讓網(wǎng)站被外界訪問(wèn),需要將網(wǎng)站發(fā)布到 web服務(wù)器tomcat上 (虛擬目錄映射)
Tomcat發(fā)布網(wǎng)站三種方式
原理:
配置<Context>元素
1)配置tomcat/conf/server.xml
在<Host name=”localhost”>內(nèi)部添加<Context>元素
<Context path="/aa" docBase="C:\AA" /> ----? 為網(wǎng)站配置虛擬目錄 /aa ------映射到 c:\AA目錄
*修改server.xml 重啟tomcat
2)$CATALINA_HOME/conf/[enginename]/[hostname]/xxx.xml
?? ?tomcat/conf/Catalina/localhost/xxx.xml
?? ?在conf下新建Catalina
在Catalina下新建 localhost
在localhost下 新建 bb.xml?
<Context docBase="C:\BB" /> --- 為什么不需要寫(xiě)path --- 虛擬目錄就是文件名bb ,path默認(rèn)/bb
*添加bb.xml,不用重啟tomcat
*推薦第二種寫(xiě)法(不需要重啟服務(wù)器,而且出錯(cuò)不會(huì)影響其它工程運(yùn)行),盡量不要使用第一種
3)將網(wǎng)站復(fù)制到tomcat/webapps
*不用重啟tomcat
*tomcat會(huì)根據(jù)文件夾名稱,自動(dòng)生成虛擬路徑
9.虛擬目錄?
當(dāng)瀏覽器訪問(wèn)網(wǎng)站采用訪問(wèn)路徑 /aa /bb /abc ----- 這些路徑不一定是服務(wù)器真實(shí)存在目錄,只是瀏覽器在訪問(wèn)這些路徑時(shí),映射到指定網(wǎng)站跟目錄
10.WAR包制作?
先用壓縮軟件將網(wǎng)站制作xx.zip --- 重命名 xx.wat ---- 復(fù)制war到tomcat/webapps
11. Tomcat Manager 使用 (程序員管理已經(jīng)發(fā)布到tomcat網(wǎng)站)
*conf/tomcat-users.xml? 加入
<role rolename="manager"/>
<user username="tomcat" password="s3cret" roles="manager"/>
* 重啟服務(wù)器?
* 這個(gè)功能默認(rèn)不要開(kāi)啟 (安全問(wèn)題)

12.域名解析完整過(guò)程圖:

在tomcat內(nèi)部同時(shí) 架設(shè)多個(gè)網(wǎng)站 --- 百度網(wǎng)站、谷歌網(wǎng)站?
* 虛擬主機(jī)技術(shù)? ---- 在tomcat中配置 <Host> 元素?
1)搭建tomcat中網(wǎng)站 --- baidu
2)在c盤(pán) 新建虛擬主機(jī)目錄 baidu , 在虛擬主機(jī)目錄中新建網(wǎng)站根目錄 main , 將百度網(wǎng)站復(fù)制main 目錄中
3)在tomcat中新建

      
        <
      
      
        Host
      
      
        >
      
      
         

Host name="www.baidu.com"  appBase="C:\baidu"

            unpackWARs="true" autoDeploy="true"

            xmlValidation="false" xmlNamespaceAware="false">


      
      
        </
      
      
        Host
      
      
        >
      
    

* 重啟tomcat
4)修改本機(jī)hosts文件?
* win7 系統(tǒng) ,將hosts文件復(fù)制到桌面修改,改后復(fù)制回去?
192.168.1.145?? www.baidu.com
5)將c:\baidu\main 網(wǎng)站根目錄 配置為缺省虛擬目錄

      
        <
      
      
        Context 
      
      
        path
      
      
        =""
      
      
         docBase
      
      
        ="main"
      
      
        />
      
    

----- 配置缺省虛擬目錄 /main 省略?
http://www.baidu.com/baidu.htm ---- 訪問(wèn)本機(jī)百度?
6)將main目錄 baidu.htm 配置 網(wǎng)站歡迎頁(yè)面?
新建WEB-INF目錄 下新建web.xml

      
        <?
      
      
        xml version="1.0" encoding="ISO-8859-1"
      
      
        ?>
      
      
        <
      
      
        web-app 
      
      
        xmlns
      
      
        ="http://java.sun.com/xml/ns/javaee"
      
      
        

    xmlns:xsi
      
      
        ="http://www.w3.org/2001/XMLSchema-instance"
      
      
        

    xsi:schemaLocation
      
      
        ="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
      
      
        

    version
      
      
        ="2.5"
      
      
        >
      
      
        <
      
      
        welcome-file-list
      
      
        >
      
      
        <
      
      
        welcome-file
      
      
        >
      
      baidu.htm
      
        </
      
      
        welcome-file
      
      
        >
      
      
        </
      
      
        welcome-file-list
      
      
        >
      
      
        </
      
      
        web-app
      
      
        >
      
    

hosts應(yīng)用
1、限制用戶上網(wǎng) ,網(wǎng)站禁止訪問(wèn)
2、軟件破解

13.缺省虛似主機(jī) DefaultHost?
<Engine name="Catalina" defaultHost="localhost"> ----- 一個(gè)tomcat中可以配置多臺(tái)虛擬主機(jī),但是只有一臺(tái)虛擬主機(jī)。客戶端可以直接通過(guò)ip訪問(wèn)
http://www.baidu.com ---- 客戶端通過(guò)域名訪問(wèn)
http://192.168.1.145 ---- 通過(guò)ip訪問(wèn)?

只有缺省虛擬主機(jī)可以通過(guò)ip訪問(wèn)

14. MyEclipse 整合 tomcat 進(jìn)行 web 程序開(kāi)發(fā)?
1)配置myeclipse 內(nèi)部tomcat 插件
配置tomcat6 在 window - preferences -- tomcat6?
檢查JDK 版本是否符合
Launch 默認(rèn)采用 debug model?
2)將tomcat插件設(shè)置為enable? 瀏覽tomcat目錄后 配置ok
3)在MyEclipse中通過(guò)插件 tomcat6 --- start? 實(shí)際上 運(yùn)行tomcat/bin/startup.bat?
4)在console窗口 查看tomcat日志?
* tomcat6 --- stop server 正常關(guān)閉tomcat? 調(diào)用 tomcat/bin/shutdown.bat?
* 如果直接點(diǎn)擊 myeclipse console 窗口 紅色按鈕 --- 強(qiáng)行停止tomcat?

應(yīng)用:
在myeclipse中編寫(xiě)一個(gè)web工程
1)創(chuàng)建web project
context root url 默認(rèn)工程名?
Javaee 規(guī)范版本?
* 在使用javaee5 規(guī)范版本時(shí),默認(rèn)支持jstl技術(shù)
2)新建html 將html編輯器 設(shè)置 html editor?
window -- preference ---- general ---- editor --- File Associations?
3)發(fā)布工程到tomcat?
原理:將當(dāng)前web工程復(fù)制tomcat/webapps?
* 修改 發(fā)布虛擬目錄名稱 --- 右鍵工程屬性 --- myeclipse ---web ----修改Web Context-root

HTTP協(xié)議
1.HTTP協(xié)議特征
1)基于TCP傳輸協(xié)議
OSI七層網(wǎng)絡(luò)體系結(jié)構(gòu)
TCP是傳輸層協(xié)議
HTTP是應(yīng)用層協(xié)議,基于TCP協(xié)議

TCP特征:三層握手
例如
A給B說(shuō)話:能聽(tīng)到我說(shuō)話嗎?
B回應(yīng):我能聽(tīng)到,能聽(tīng)到我說(shuō)話嗎?
A回應(yīng):我也能聽(tīng)到

確保通信暢通 ----? 數(shù)據(jù)傳輸不允許丟包
A給B發(fā)數(shù)據(jù),如果B沒(méi)有回應(yīng),A選擇重新發(fā)送 ----- 超時(shí)
2)默認(rèn)端口80
3)基于請(qǐng)求 – 響應(yīng)模式的協(xié)議
先請(qǐng)求,在出現(xiàn)響應(yīng) ----- 請(qǐng)求和響應(yīng)一一對(duì)應(yīng)

2.兩個(gè)實(shí)驗(yàn)
實(shí)驗(yàn)一 : 通過(guò)telnet 連接服務(wù)器,進(jìn)行協(xié)議操作?
XP 自動(dòng)安裝telnet?
win7 系統(tǒng) 安裝telnet插件?
* telnet 采用 傳輸層連接原理方式? 通信內(nèi)容必須嚴(yán)格按照應(yīng)用層協(xié)議?
語(yǔ)法:telnet ip port?
1、 cmd> telnet localhost 80?
2、手動(dòng)輸入HTTP協(xié)議請(qǐng)求?
telnet亂碼解決:ctrl+] 回車
3、輸入?yún)f(xié)議內(nèi)容
GET / HTTP/1.0
HOST: localhost
回車

實(shí)驗(yàn)二? : 安裝Httpwatch
完成訪問(wèn)web頁(yè)面時(shí) http協(xié)議數(shù)據(jù)包 抓取?
3.查看網(wǎng)絡(luò)連接過(guò)程中 http協(xié)議內(nèi)容
請(qǐng)求內(nèi)容
GET / HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint, */*
Accept-Language: zh
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)
Host: localhost
Connection: Keep-Alive

響應(yīng)內(nèi)容
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
ETag: W/"7347-1184876416000"
Last-Modified: Thu, 19 Jul 2007 20:20:16 GMT
Content-Type: text/html
Content-Length: 7347
Date: Sat, 09 Jun 2012 07:02:35 GMT

<?xml version="1.0" encoding="ISO-8859-1"?>

...
4.HTTP和HTML關(guān)系?
HTTP通信協(xié)議,規(guī)定數(shù)據(jù)傳輸格式
HTML網(wǎng)頁(yè)設(shè)計(jì)語(yǔ)言,靜態(tài)網(wǎng)頁(yè)數(shù)據(jù)
HTTP 傳輸格式、 HTML傳輸內(nèi)容
5.HTTP/1.0、HTTP/1.1區(qū)別?
在HTTP1.0協(xié)議中,客戶端與web服務(wù)器建立連接后,只能獲得一個(gè)web資源
HTTP1.1協(xié)議,運(yùn)行客戶端與web服務(wù)器建立連接后,在一個(gè)連接上獲取多個(gè)web資源
6.一個(gè)web頁(yè)面中,使用img標(biāo)簽引用了三幅圖片,當(dāng)客戶端訪問(wèn)服務(wù)器中的這個(gè)web頁(yè)面時(shí),客戶端總共會(huì)訪問(wèn)幾次服務(wù)器,即向服務(wù)器發(fā)送了幾次HTTP請(qǐng)求?
*三幅圖片地址是否相同
如果三幅圖片地址都不相同 --- 4次請(qǐng)求

HTTP請(qǐng)求
請(qǐng)求完整格式包括三個(gè)部分:請(qǐng)求行、頭信息、請(qǐng)求體
1.請(qǐng)求行:請(qǐng)求中第一行信息 --- 包括三個(gè)部分? 請(qǐng)求方式、資源路徑、HTTP協(xié)議版本
例如:GET / HTTP/1.1
HTTP請(qǐng)求方式有七種:POST、GET、HEAD、OPTIONS、DELETE、TRACE、PUT
常用兩種:GET、POST
1)客戶端網(wǎng)頁(yè)哪些是GET方式請(qǐng)求?哪些是POST請(qǐng)求
GET方式:1、用戶直接在瀏覽器上手動(dòng)輸入url地址 2、<a href="url"></a>?
3、<form method="get">?? *form表單默認(rèn)提交方式就是get
POST方式:1、<form method="post">
2)GET提交方式和POST提交方式區(qū)別?
GET提交方式后攜帶數(shù)據(jù)有大小限制1K,提交數(shù)據(jù)在url上顯示
*http://localhost/day04/url?username=zhangsan 格式 url?name=value&name=value&name=value...?
以?分隔url和參數(shù),參數(shù)采用鍵值對(duì)格式,多個(gè)參數(shù)使用&符號(hào)分隔
POST數(shù)據(jù)在請(qǐng)求體重,不再url上顯示,沒(méi)有數(shù)據(jù)大小限制
*uesrname=zhangsang 請(qǐng)求體和信息頭直接存在一個(gè)空行
2.頭信息
Accept: text/html,image/*?? ----- 客戶端可以接收文件類型 text/html->HTML文件 image/* 任意格式圖片
Accept-Charset: ISO-8859-1 ----- 客戶端可以識(shí)別編碼字符集
Accept-Encoding: gzip ----- 客戶端可以識(shí)別壓縮數(shù)據(jù)格式,gzip是一種壓縮格式
Accept-Language:zh-cn ----- 客戶端瀏覽器語(yǔ)言
Host: www.itcast.com:80? ----- 訪問(wèn)服務(wù)器地址?
If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT ----- 該請(qǐng)求的資源在客戶端保存最后訪問(wèn)時(shí)間(緩存有關(guān))
Referer: http://www.itcast.com/index.jsp ---- 上一次請(qǐng)求訪問(wèn)頁(yè)面
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0) ---- 客戶端瀏覽器類型版本?
Connection: close/Keep-Alive??? ---- 該請(qǐng)求連接后,連接是保持還是關(guān)閉 1.0關(guān)閉 1.1保持
Date: Tue, 11 Jul 2000 18:23:51 GMT ---- 請(qǐng)求時(shí)間
3.請(qǐng)求體:存放客戶端提交post請(qǐng)求數(shù)據(jù)
key=value&key=value&key=value .... ?
例如:username=sss
4.Referer防止客戶盜鏈數(shù)據(jù)
eg:模擬瀏覽器訪問(wèn)服務(wù)器獲得refererServlet當(dāng)中信息
1)URL連接 --- HTTP協(xié)議
2)Socket連接 --- TCP協(xié)議

eg:

      
        package
      
      
         cn.lsl.servlet;




      
      
        import
      
      
         java.io.IOException;


      
      
        import
      
      
         java.io.PrintWriter;




      
      
        import
      
      
         javax.servlet.ServletException;


      
      
        import
      
      
         javax.servlet.http.HttpServlet;


      
      
        import
      
      
         javax.servlet.http.HttpServletRequest;


      
      
        import
      
      
         javax.servlet.http.HttpServletResponse;




      
      
        public
      
      
        class
      
       RefererServlet 
      
        extends
      
      
         HttpServlet {



    

    
      
      
        public
      
      
        void
      
      
         doGet(HttpServletRequest request, HttpServletResponse response)

            
      
      
        throws
      
      
         ServletException, IOException {

        String referer 
      
      = request.getHeader("referer");     
      
        //
      
      
        獲得頭信息
      
      

        response.setContentType("text/html;charset=gbk"
      
        );

        
      
      
        if
      
      (referer == 
      
        null
      
       || !referer.startsWith("http://localhost"
      
        )){

            
      
      
        //
      
      
        盜鏈
      
      

            response.getWriter().println("盜鏈!"
      
        );

            
      
      
        return
      
      
        ;

        }
      
      
        else
      
      
        {

            response.getWriter().println(
      
      "XX網(wǎng)站歡迎您。。。。"
      
        );

        }

    }



    

    
      
      
        public
      
      
        void
      
      
         doPost(HttpServletRequest request, HttpServletResponse response)

            
      
      
        throws
      
      
         ServletException, IOException {

        doGet(request, response);

    }



}
      
    

直接輸入網(wǎng)址,則會(huì)被當(dāng)做盜鏈
從該網(wǎng)站的某個(gè)頁(yè)面點(diǎn)進(jìn)去則能正常訪問(wèn)

      
        <%
      
      
        @ page language
      
      
        =
      
      
        "
      
      
        java
      
      
        "
      
      
         import
      
      
        =
      
      
        "
      
      
        java.util.*
      
      
        "
      
      
         pageEncoding
      
      
        =
      
      
        "
      
      
        ISO-8859-1
      
      
        "
      
      
        %>
      
      
        <!
      
      
        DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
      
      
        >
      
      
        <
      
      
        html
      
      
        >
      
      
        <
      
      
        head
      
      
        >
      
      
        </
      
      
        head
      
      
        >
      
      
        <
      
      
        body
      
      
        >
      
      
        <
      
      
        a 
      
      
        href
      
      
        ="referer"
      
      
        >
      
      link
      
        </
      
      
        a
      
      
        >
      
      
        </
      
      
        body
      
      
        >
      
      
        </
      
      
        html
      
      
        >
      
    

模擬客戶端,繞過(guò)防盜鏈邏輯,獲得需要信息

      
        package
      
      
         cn.lsl.servlet;


      
      
        import
      
      
         java.io.InputStream;


      
      
        import
      
      
         java.net.URL;


      
      
        import
      
      
         java.net.URLConnection;




      
      
        public
      
      
        class
      
      
         URLTest {

    
      
      
        public
      
      
        static
      
      
        void
      
       main(String[] args) 
      
        throws
      
      
         Exception {

        
      
      
        //
      
      
        創(chuàng)建URL對(duì)象
      
      

        URL url = 
      
        new
      
       URL("http://localhost:8080/HTTPTest/referer"
      
        );

        
      
      
        //
      
      
        鏈接目標(biāo)資源
      
      

        URLConnection connection=
      
         url.openConnection();

        connection.addRequestProperty(
      
      "referer", "http://localhost/index.jsp"
      
        );

        
      
      
        //
      
      
        獲得網(wǎng)站輸入流
      
      

        InputStream in =
      
         connection.getInputStream();

        
      
      
        byte
      
      [] buf = 
      
        new
      
      
        byte
      
      [1024
      
        ];

        in.read(buf);    
      
      
        //
      
      
        將流數(shù)據(jù)讀取buf中
      
      
        for
      
      (
      
        byte
      
      
         b : buf){

            System.out.write(b);

        }

        System.out.flush();

    }

}
      
    

HTTP響應(yīng)
響應(yīng)數(shù)據(jù) 分為三個(gè)部分:狀態(tài)行、頭信息、響應(yīng)體
1.狀態(tài)行分為三個(gè)部分:HTTP協(xié)議版本、狀態(tài)碼、描述信息
例如:HTTP/1.1 200 OK
100~199 Informational 請(qǐng)求信息不足,還需要其他信息才能處理
200~299 Success 請(qǐng)求處理成功
300~399 Redirection 服務(wù)器已經(jīng)處理完畢,客戶端還需要進(jìn)一步動(dòng)作
400~499 Client Error 客戶端錯(cuò)誤
500~599 Server Error 服務(wù)器端錯(cuò)誤

200 請(qǐng)求處理成功 302 客戶端進(jìn)行重定向 304 客戶端訪問(wèn)資源沒(méi)有被修改后,客戶端訪問(wèn)本地緩存
404 訪問(wèn)資源不存在 500 服務(wù)器內(nèi)部出錯(cuò)
2.響應(yīng)頭
Location: http://www.it315.org/index.jsp ---- 重定向地址 結(jié)合302一起使用
*重定向兩次請(qǐng)求,兩次響應(yīng)
Server:apache tomcat ----- 服務(wù)器類型?
Content-Encoding: gzip ---- 設(shè)置響應(yīng)數(shù)據(jù)壓縮格式
*如果響應(yīng)數(shù)據(jù)經(jīng)過(guò)壓縮,傳輸體積更小,性能更好
例如:
在沒(méi)有壓縮情況下,13605字節(jié) http://localhost/docs/
如何設(shè)置tomcat壓縮
*通過(guò)設(shè)置tomcat/conf/server.xml設(shè)置響應(yīng)數(shù)據(jù)壓縮
<Connector port="80" protocol="HTTP/1.1"?
?????????????? connectionTimeout="20000"?
?????????????? redirectPort="8443" compressableMimeType="text/html,text/xml,text/plain" compression="on"/>
清楚瀏覽器緩存,重啟tomcat
4244字節(jié) http://localhost/docs
Content-Length: 80? ----- 響應(yīng)數(shù)據(jù)長(zhǎng)度
Content-Language: zh-cn? ----- 響應(yīng)數(shù)據(jù)語(yǔ)言
Content-Type: text/html; charset=GB2312? ----- 響應(yīng)數(shù)據(jù)類型
*數(shù)據(jù)類型采用Mime協(xié)議規(guī)定類型? html文件 ---- text/html、jpg文件 ---- image/jpeg
*在tomcat/conf/web.xml中查看文件mime類型
Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT? ----- 和請(qǐng)求頭信息If-Modified-Since一起使用,控制服務(wù)器緩存
* ETag: W/"13397-1184876416000" tomcat生成Etag 13397文件大小 1184876416000文件最后修改時(shí)間(精確毫秒)
* 客戶端下次請(qǐng)求時(shí)通過(guò)If-None-Match 攜帶剛剛 Etag信息
Refresh: 1;url=http://www.it315.org ----- 網(wǎng)頁(yè)自動(dòng)跳轉(zhuǎn)
Content-Disposition: attachment; filename=aaa.zip ----- 文件下載時(shí)指定文件附件名稱
控制該程序在客戶端不緩存(以下三個(gè)一起使用)
Expires: -1?
Cache-Control: no-cache ?
Pragma: no-cache ?
*對(duì)于動(dòng)態(tài)程序,經(jīng)常修改,禁止瀏覽器緩存內(nèi)容
Connection: close/Keep-Alive?? ---- 響應(yīng)后連接是否關(guān)閉
Date: Tue, 11 Jul 2000 18:23:51 GMT --- 響應(yīng)時(shí)間
3.響應(yīng)體
通常為HTML文件內(nèi)容 --- 如果設(shè)置響應(yīng)體進(jìn)行g(shù)zip壓縮,看到gzip壓縮內(nèi)容

重定向:

eg:

      
        package
      
      
         cn.lsl.servlet;




      
      
        import
      
      
         java.io.IOException;


      
      
        import
      
      
         java.io.PrintWriter;




      
      
        import
      
      
         javax.servlet.ServletException;


      
      
        import
      
      
         javax.servlet.http.HttpServlet;


      
      
        import
      
      
         javax.servlet.http.HttpServletRequest;


      
      
        import
      
      
         javax.servlet.http.HttpServletResponse;




      
      
        public
      
      
        class
      
       RedirectServlet 
      
        extends
      
      
         HttpServlet {



    
      
      
        public
      
      
        void
      
      
         doGet(HttpServletRequest request, HttpServletResponse response)

            
      
      
        throws
      
      
         ServletException, IOException {

        response.setStatus(
      
      302
      
        );

        response.setHeader(
      
      "Location", "index.jsp");  
      
        //
      
      
        重定向index.jsp
      
      
            }



    

    
      
      
        public
      
      
        void
      
      
         doPost(HttpServletRequest request, HttpServletResponse response)

            
      
      
        throws
      
      
         ServletException, IOException {

        doGet(request,response);

    }



}
      
    

設(shè)置瀏覽器不緩存

eg:

      
        package
      
      
         cn.lsl.servlet;




      
      
        import
      
      
         java.io.IOException;


      
      
        import
      
      
         java.io.PrintWriter;




      
      
        import
      
      
         javax.servlet.ServletException;


      
      
        import
      
      
         javax.servlet.http.HttpServlet;


      
      
        import
      
      
         javax.servlet.http.HttpServletRequest;


      
      
        import
      
      
         javax.servlet.http.HttpServletResponse;




      
      
        public
      
      
        class
      
       NoCacheServlet 
      
        extends
      
      
         HttpServlet {



    
      
      
        public
      
      
        void
      
      
         doGet(HttpServletRequest request, HttpServletResponse response)

            
      
      
        throws
      
      
         ServletException, IOException {

        
      
      
        //
      
      
        需要三句禁止緩存,防止瀏覽器兼容問(wèn)題
      
      

        response.setDateHeader("expires", -1
      
        );

        response.setHeader(
      
      "Cache-Control", "no-cache"
      
        );

        response.setHeader(
      
      "Pragma", "no-cache"
      
        );

        response.getWriter().println(
      
      "aabbcc"
      
        );

    }



    

    
      
      
        public
      
      
        void
      
      
         doPost(HttpServletRequest request, HttpServletResponse response)

            
      
      
        throws
      
      
         ServletException, IOException {

        doGet(request,response);

    }



}
      
    

通過(guò)HTTP協(xié)議Range頭信息,實(shí)現(xiàn)斷點(diǎn)下載功能
在連接服務(wù)器目標(biāo)資源進(jìn)行下載過(guò)程中,傳遞Range頭信息,指定下載目標(biāo)資源部分內(nèi)容? ---? 實(shí)現(xiàn)斷點(diǎn)下載功能
斷點(diǎn)下載:使用URL類模擬客戶端訪問(wèn)WebRoot/info.txt,下載文件中內(nèi)容

      
        package
      
      
         cn.lsl.servlet;


      
      
        import
      
      
         java.io.FileOutputStream;


      
      
        import
      
      
         java.io.InputStream;


      
      
        import
      
      
         java.io.OutputStream;


      
      
        import
      
      
         java.net.URL;


      
      
        import
      
      
         java.net.URLConnection;




      
      
        public
      
      
        class
      
      
         RangeTest {

    
      
      
        //
      
      
        通過(guò)Range頭信息實(shí)現(xiàn)斷點(diǎn)下載
      
      
        public
      
      
        static
      
      
        void
      
       main(String[] args) 
      
        throws
      
      
         Exception {

        URL url 
      
      = 
      
        new
      
       URL("http://localhost:8080/HTTPTest/info.txt"
      
        );

        URLConnection connection 
      
      =
      
         url.openConnection();

        
      
      
        //
      
      
        通過(guò)addRequestProperty添加頭信息,Range實(shí)現(xiàn)斷點(diǎn)下載
      
      

        connection.addRequestProperty("Range", "bytes=100-"
      
        );

        InputStream in 
      
      =
      
         connection.getInputStream();

        OutputStream out 
      
      = 
      
        new
      
       FileOutputStream("download.txt"
      
        );

        
      
      
        byte
      
      [] buf = 
      
        new
      
      
        byte
      
      [1024
      
        ];

        
      
      
        int
      
      
         len;

        
      
      
        while
      
      ((len = in.read(buf)) != -1
      
        ){

            out.write(buf, 
      
      0
      
        , len);

        }

        in.close();

        out.close();

    }

}
      
    

Tomcat服務(wù)器常用配置和HTTP簡(jiǎn)介


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 奉贤区| 通州区| 丽江市| 依安县| 南部县| 鱼台县| 垦利县| 封开县| 通化市| 鄂托克前旗| 共和县| 镇江市| 辉南县| 凤山县| 宜州市| 灵山县| 贡嘎县| 崇仁县| 鄯善县| 界首市| 宣武区| 寻乌县| 宝坻区| 苏尼特右旗| 龙州县| 梧州市| 池州市| 昆山市| 若尔盖县| 安庆市| 永嘉县| 紫云| 定州市| 唐河县| 叙永县| 永靖县| 安顺市| 新干县| 屯门区| 商都县| 平利县|