java程序員第八課 tomcat與web程序結構與Http協議

day08

1、上節內容回顧
* jdk 5.0新特性

2、WEB內容的概述
* web:網頁,javaweb是使用java開發網頁(動態網頁),
* 使用什麼技術開發動態網頁:sun公司提供了兩種技術 jsp servlet

* web(網站)的結構:
    - c s: client server
        * 常見的應用 qq 迅雷 :需要安裝在本地硬盤

        * 優點:把一些程序放在本地運行,可以減輕服務器的壓力
        * 缺點:服務器如果更新了,客戶端軟件跟着更新

    - b s: broswer server
        * 常見的應用 網銀 支付寶 

        * 優點:如果服務器更新了,瀏覽器直接訪問
        * 缺點:服務器的壓力大
            ** 提供一種技術 ajax,使用js,js代碼也是放在客戶端瀏覽器運行,也可以減輕服務器的一些壓力

***  要學習是使用java開發b s結構的動態網站

* 靜態網站:使用 html css js

* 動態網站:
    - sun公司提供: jsp servlet
    - php: phpcms
    - asp
    ........

*** 如果單純的開發網站,java沒有任何的優勢

* java適合做什麼?
    - 適合實現一些大型的程序(企業級的應用) oa  erp  crm  

3、web服務器的通信和常見的web服務器
* 比如瀏覽器 http://www.baidu.com 可以顯示出來百度的頁面

* 過程:使用ip+端口號,進行訪問

* 默認的端口號:80  - 不需要寫(可以省略)

* 在你的瀏覽器裏面,輸入一個地址,可以訪問我的本地文件夾裏面的一個文件
* 使用socket網絡編程 

* 服務器:
    1、硬件:一臺電腦
    2、軟件:在電腦安裝了一個服務器軟件,這個時候,這個電腦就可以作爲服務器了。

* 常見的web服務器:
    1、tomcat服務器:
        - apache組織提供的,免費開源的服務器
    2、weblogic服務器
        - bea公司提供的,收費的
    3、websphere服務器
        - ibm提供的,收費的

4、tomcat服務器的安裝(*
* 安裝tomcat之前,必須要安裝jdk,同時配置JAVA_HOME環境變量
- JAVA_HOME: C:\Program Files\Java\jdk1.7.0_72
** 第一種使用安裝文件 .exe文件

** 第二種,使用壓縮文件(一般使用這種方式進行安裝)
    **** 解壓的時候,解壓到的目錄中不能帶中文和空格

** 啓動服務器:
    - 找到tomcat文件夾下的一個目錄 bin,有一個文件.bat,文件名稱 startup.bat
    - 點擊之後,出現一個提示框,當看到裏面沒有exception,在下面有ms,這個時候表示tomcat啓動成功了。

    - 測試服務器是否啓動成功
        - tomcat的默認端口號是 8080
        ** 直接在地址欄輸入 http://ip:8080 回車,如果出現一個貓的頁面,表示啓動成功了
            *** 因爲現在訪問的是本地,ip可以使用 localhost 或者 127.0.0.1
            *** http://192.168.33.26:8080/

        ** webapps文件裏面 創建一個文件夾 aa ,在aa裏面創建html頁面,如果頁面可以正常訪問,tomcat啓動成功
            *** http://192.168.33.26:8080/aa/1.html
    - 關閉服務器
        ** 直接把啓動窗口關閉
        ** 在bin目錄下 shutdown.bat,點擊這個文件,也可以關閉

5、tomcat服務器常見的問題(**
(1)安裝tomcat之前,必須要安裝jdk,同時要配置JAVA_HOME環境變量
* 提示出錯:Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
At least one of these environment variable is needed to run this program

(2)tomcat的端口衝突
    * 系統中可能啓動了多個tomcat,這個時候出現端口衝突的問題
    ** 兩種解決方式:
        1、找到tomcat端口是8080的進程,結束掉
            * 在cmd窗口下,使用doc命令 netstat -ano 
            * 列出當前所有啓動的端口
            * 找到8080端口的PID
            * 啓動任務管理器,找到pi對應的值,結束掉
        2、修改要啓動的tomcat端口
            * 找到tomcat目錄下的conf目錄,找到文件server.xml
            * <Connector port="8088" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="8443" />
            * 重新啓動服務器,才能生效

        ** 如果端口修改爲80,不需要寫端口號,直接通過ip就可以進行訪問了

6、tomcat的目錄結構(**
* bin(*): 裏面放啓動和關閉tomcat的文件
* conf(**):tomcat一些相關的配置文件 server.xml web.xml
* lib: 放入的是tomcat運行需要的jar包,tomcat支持功能的jar
* logs:放入一些日誌信息
* temp:臨時文件(緩存文件)
* webapps(*):放入開發項目,直接通過ip+端口號+文件名+文件就可以訪問
* work:jsp編譯成servlet的class文件的地方

7、動態網站的目錄結構(*
* 靜態網站:html css js 目錄結構 aa/1.html 把他放入到webapps下就可以直接訪問
* 動態網站的目錄結構
website
- html,css ,js,jsp
-(必須要有的部分)
- WEB-INF
– web.xml

            --(可選部分,要麼不寫,如果寫必須按照下面的名稱命名)
            ** classes: java編譯成class文件存放目錄
            ** lib:放入一些額外的jar包
    ** 把webstie放入到webapps下面的

8、myeclipse中集成tomcat(*
* 爲什麼要集成:提高開發效果
* 集成過程
* 發佈過程
* 會把項目發佈到tomcat的webapps目錄下
* 並不是把所有的內容都放進去,至是放入webroot目錄下的內容
* webroot目錄沒有了,webroot目錄變成了,部署到tomcat的項目名稱了

9、tomcat的Manager管理(瞭解)
* 客戶來使用的功能

10、tomcat中一些細節的問題(**
*創建web項目時候,最上面有 project name:這個名稱是放到工作空間中的名稱
* 最下面有一個content url,有一個名稱,這個名稱是 放到tomcat下面的項目的名稱
** 如果想要訪問這個項目,使用下面這個名稱 (放到tomcat下面的項目的名稱)

* 可以在myeclipse中修改部署到tomcat的項目名稱
* 右鍵 屬性 -- > 搜索 web ,進行修改

11、tomcat中虛擬路徑的配置(**
* 把項目按照目錄結構 放入到webapps下面就可以訪問

通過配置虛擬路徑的方式
* 第一種配置:使用Context來配置(*****)
    ** 找到tomcat的配置文件 在conf下面server.xml
    ** 在</Host>之前配置
    ** <Context docBase="c:\bb" path="/demo"></Context>
        - docBase: 本地的文件夾路徑
        - path:通過什麼地址訪問 http://127.0.0.1/demo/2.html
    ** 找到tomcat配置文件中,在conf下面web.xml
    ** 找到名稱是listings 把裏面值設置成true: 列出文件夾下面的所有文件(通過列表來展現)

*第二種配置:(****)
    ** 到conf下面的server.xml中 [enginename]/[hostname]/ directory.
    ** [enginename]  <Engine name="Catalina"
    ** [hostname]     <Host name="localhost"
    ** 在這個路徑下面,創建一個xml文件 haha.xml
        ** haha.xml: 文件內容,<Context docBase="c:\haha"></Context>

    ** 訪問:直接使用xml的文件名進行訪問 http://127.0.0.1/haha

12、訪問網站的全過程分析(瞭解,作爲擴展)
** 畫圖分析過程

13、tomcat虛擬主機(瞭解,擴展)
* hosts文件路徑 C:\Windows\System32\drivers\etc

* 如何仿百度的效果
    1、下載百度的頁面
    2、配置hosts文件  127.0.0.1  www.baidu.com
    3、在conf目錄下面的server.xml進行配置,
        - <Host name="www.baidu.com"  appBase="I:\baidu"
                unpackWARs="true" autoDeploy="true">

                <Context docBase="\website" path="/"></Context>

              </Host>
           ** name:改成想要訪問的域名地址
           ** appBase:頁面所在的本地路徑
           ** 配置 Context docBase="\website" path="/"
           ** 修改tomcat的端口號 80
           ** 設置首頁面 在tomcat裏面conf下面的web.xml中
            - 在下面的  <welcome-file-list>裏面 增加 <welcome-file>baidu.htm</welcome-file>
           **** 最終可以通過www.baidu.com來訪問本地百度的頁面
** 可以配置多個虛擬主機
** 但是必須要有一個默認的虛擬主機(直接通過ip的訪問的)
** 不是默認的虛擬主機不能直接通過ip訪問的

14、http協議快速入門(**)
* 什麼是http協議
** 協議:雙方可以達成的共同的目標
** http:網絡中發送請求和接受請求數據格式
- 請求和響應要遵循一定的格式,才能完成網絡的操作

*http協議的特點:
    1、默認的端口 80
    2、基於tcp的傳輸協議
    3、請求和響應是成對出現(先有請求後有響應)

* 使用doc命令 telnet來模擬http協議的操作

** 首先打開cmd窗口
** 直接輸入命令 telnet localhost 端口號 80
** 會有中文亂碼問題,解決 ctrl+],直接點擊回車
** 
請求:
GET /aa/1.html HTTP/1.1
host:localhost


服務器響應:
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Accept-Ranges: bytes
ETag: W/"21-1426298016838"
Last-Modified: Sat, 14 Mar 2015 01:53:36 GMT
Content-Type: text/html
Content-Length: 21
Date: Sat, 14 Mar 2015 07:07:46 GMT

<h1>hello world!</h1>

* 推薦多個工具
** httpwatch:這個工具只能在ie上使用,其他瀏覽器目前是不支持的
    - 安裝完成之後,在ie的工具裏面自帶添加進去
    - 如果找不到,可以通過快捷鍵 shift+f2可以打開

** ie自帶工具
    - 點擊 f12 點擊網絡,開始捕獲 ,可以看到當前請求和響應的信息
** 火狐自帶工具
    - 需要安裝一個firebug工具,也可以看到當前請求和響應的信息
** 谷歌自帶工具
    - 點擊f12,可以看到當前請求和響應的信息

15、http請求操作(*)
* 實現一個表單使用get和post提交

** 請求的內容
-      
GET /day082/request/form01.html 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

** http請求的組成(***)
    1、http請求行 :提交方式 訪問的地址 http的版本
    2、http請求頭:使用key-value形式,一個key可以有一個value,也可以有多個value
    3、http請求體:通過post提交的數據   比如: username=zhangsan&password=aaaaaaaa

** http重要的請求頭
    1、Referer:可以防盜鏈(得到當前訪問的路徑)
        * 演示防盜鏈的效果 - 使用 servlet來實現

        ** 所有的內容,只允許my文件夾下面的html纔可以訪問
        ** 如果不是從my文件夾下面訪問的html文件,都不可以訪問

    2、User-Agent: 可以獲取當前使用的瀏覽器
        - ie瀏覽器: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; MAAU)
        - 火狐瀏覽器:Mozilla/5.0 (Windows NT 6.1; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0

    3、If-Modified-Since: 經常和響應裏面的Last-Modified一起使用,用做本地緩存

16、HTTP/1.1和HTTP/1.0區別(面試題目)

GET /aa/1.html HTTP/1.1
host:localhost

GET /aa/1.html HTTP/1.0
host:localhost

* HTTP/1.1請求之後不會馬上斷開
* HTTP/1.0請求之後回馬上斷開

17、http的響應(**)
* HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Accept-Ranges: bytes
ETag: W/”625-1426321060991”
Last-Modified: Sat, 14 Mar 2015 08:17:40 GMT
Content-Type: text/html
Content-Length: 625
Date: Sat, 14 Mar 2015 08:18:15 GMT

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
.................

* 有三部分組成
    1、響應行
        - http版本 狀態碼 狀態碼描述
        - 狀態碼:(****)
        ** 常用的狀態碼
        1、200 表示請求成功 
        2、302:重定向
        3、304:查詢本地緩存

        4、404:資源找不到
        5、500:服務器內部(代碼錯誤)

    2、響應頭
        - 採用key-value形式顯示,一個key可以有一個value,也可以有多個value
        ** Refersh
            - 使用這個頭可以實現頁面的定時跳轉(刷新)

        ** Location
            - 使用這個頭可以和302完成重定向

        ** Last-Modified和請求裏面 If-Modified-Since
            - 在請求頭信息裏面有一個If-Modified-Since,查找本地緩存

        ** 禁用緩存的頭(如果想要所有瀏覽器都能禁用緩存,這三個頭都要設置)
        Expires: -1
        Cache-Control: no-cache  
        Pragma: no-cache   

        ** (瞭解) Content-Disposition:
            ** 可以使用這個頭實現文件的下載操作

    3、響應體
        ** 顯示在頁面上的內容
            - 響應頭和響應體直接有空格(格式)

    ** 如何處理緩存問題(開發心得)
        1、清除ie的緩存文件
        2、修改ip地址(可以使用localhost或者127。0.0.1)
        3、訪問一個錯誤的頁面,然後再訪問正確的頁面
        4、在地址後面加一個隨機數 比如 http://127.0.0.1/day08/my/my.html?id=1

        5、把項目移除,然後再部署
        6、到tomcat目錄下面 I:\tomcat\apache-tomcat-7.0.53\work
         把work裏面的所有內容都刪除

    ** URL和URI區別(擴展)
        ** URI範圍大於URL
        ** URL:網絡地址 比如:http://www.sina.com  http://www.itcast.com.cn
        **URI地址包含網絡地址,同時包含類似 [email protected]  thunder://1111  ed2k://qqqqq
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章