1. 程式人生 > >Java學習筆記13-- web伺服器介紹及Tomcat的使用;jdk,eclipse,tomcat關係以及安裝順序;http協議

Java學習筆記13-- web伺服器介紹及Tomcat的使用;jdk,eclipse,tomcat關係以及安裝順序;http協議

web伺服器介紹及Tomcat的使用

jdk,eclipse,tomcat關係以及安裝順序

1、eclipse安裝前必須要先裝jdk

1、沒有JDK的話,無法安裝或者執行eclipse。
2、JDK 是整個Java的核心,包括了Java執行環境,Java工具和Java基礎的類庫。

3、系統變數->新建->變數名:JAVA_HOME 變數值:c:\jdk1.6.0_21\

系統變數->新建->變數名:CLASSPATH 變數值:.;%JAVA_HOME%\lib

系統變數->編輯->變數名:Path 在變數值的最前面加上:%JAVA_HOME%\bin;

(CLASSPATH中有一英文句號“.”後跟一個分號,表示當前路徑的意思)

2、tomcat執行要依靠jdk

因為tomcat是用java寫的,所以執行需要JRE,就是JAVA執行時刻環境,所以必須通過安裝JDK來得到這個執行環境,不裝JDK裝JRE也行,sun的網站上有下載。但是JRE只是執行時刻化境,不能編譯JAVA源程式。

  • 注意點:tomcat軟體是java語言開發的。 tomcat軟體啟動時,會預設到系統的環境變數中查詢一個名稱叫JAVA_HOME的變數。這個變數的作用找到tomcat啟動所需的jvm。
    解決辦法; 到環境變數中設定JAVA_HOME的變數
    JAVA_HOME= C:\Program Files\Java\jdk1.6.0_30 (注意別配置到bin目錄下)

所以,正常的順序是,先安裝jdk,然後配置path、path_home;然後安裝eclipse,最後執行web專案需要用到tomcat,那麼就安裝tomcat.

Http協議

HTTP是hypertext transfer protocol(超文字傳輸協議)的簡寫,它是TCP/IP協議的一個應用層協議,用於定義WEB瀏覽器與WEB伺服器之間交換資料的過程。

http請求

客戶端連上伺服器後,向伺服器請求某個web資源,稱之為客戶端向伺服器傳送了一個HTTP請求。一個完整的HTTP請求包括如下內容:一個請求行、若干請求頭、以及實體內容,其中的一些訊息頭和實體內容都是可選的,訊息頭和實體內容之間要用空行隔開。如下所示 :

HTTP請求的細節——請求行

  • 請求行中的GET稱之為請求方式,請求方式有:
    POST、GET、HEAD、OPTIONS、DELETE、TRACE、PUT
    常用的有:POST、GET

  • 不管POST或GET,都用於向伺服器請求某個WEB資源,這兩種方式的區別主要表現在資料傳遞上,客戶端通過這兩種方式都可以帶一些資料給伺服器:

    • 如請求方式為GET方式,則可以在請求的URL地址後以?的形式帶上交給伺服器的資料,多個數據之間以&進行分隔,例如:
      GET /mail/1.html?name=abc&password=xyz HTTP/1.1
      GET方式的特點:在URL地址後附帶的引數是有限制的,其資料容量不能超過1K。
  • 如請求方式為POST方式,則可以在請求的實體內容中向伺服器傳送資料,例如:

     POST /servlet/ParamsServlet HTTP/1.1
     Host:
     Content-Type: application/x-www-form-urlencoded
     Content-Length: 28
    

    name=abc&password=xyz
    Post方式的特點:傳送的資料量無限制。

HTTP請求的細節——請求頭

  • 用於HTTP請求中的常用頭
    Accept: text/html,image/*
    Accept-Charset: ISO-8859-1
    Accept-Encoding: gzip,compress
    Accept-Language: en-us,zh-
    Host: www.it315.org:80
    If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT
    Referer: http://www.it315.org/index.jsp
    User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
    Cookie:
    Connection: close/Keep-Alive
    Date: Tue, 11 Jul 2000 18:23:51 GMT

HttpServletRequest

  • HttpServletRequest物件代表客戶端的請求,當客戶端通過HTTP協議訪問伺服器時,HTTP請求頭中的所有資訊都封裝在這個物件中,開發人員通過這個物件的方法,可以獲得客戶這些資訊

Request常用方法

  • 獲得客戶機資訊
    getRequestURL方法返回客戶端發出請求時的完整URL。
    getRequestURI方法返回請求行中的資源名部分。
    getQueryString 方法返回請求行中的引數部分。
    getPathInfo方法返回請求URL中的額外路徑資訊。額外路徑資訊是請求URL中的位於Servlet的路徑之後和查詢引數之前的內容,它以“/”開頭。
    getRemoteAddr方法返回發出請求的客戶機的IP地址
    getRemoteHost方法返回發出請求的客戶機的完整主機名
    getRemotePort方法返回客戶機所使用的網路埠號
    getLocalAddr方法返回WEB伺服器的IP地址。
    getLocalName方法返回WEB伺服器的主機名

  • 獲得客戶機請求頭
    getHeader方法
    getHeaders方法
    getHeaderNames方法

  • 獲得客戶機請求引數(客戶端提交的資料)
    getParameter方法
    getParameterValues(String name)方法
    getParameterNames方法
    getParameterMap方法

  • request常見應用
    獲取瀏覽器型別
    防盜鏈
    各種表單輸入項資料的獲取
    textpasswordradiocheckbox
    fileselecttextareahidden
    imagebutton給js程式設計用`
    請求引數的中文亂碼問題

HTTP響應

一個HTTP響應代表伺服器向客戶端回送的資料,它包括:
一個狀態行若干響應頭以及實體內容 ,其中的一些訊息頭和實體內容都是可選的,訊息頭和實體內容之間要用空行隔開。

HTTP響應的細節——狀態行

  • 狀態行
    格式: HTTP版本號 狀態碼 原因敘述
    舉例:HTTP/1.1 200 OK
  • 狀態碼用於表示伺服器對請求的處理結果,它是一個三位的十進位制數。響應狀態碼分為5類,如下所示:

在這裡插入圖片描述

HTTP響應細節——常用響應頭

  • HTTP請求中的常用響應頭
    Location: http://www.it315.org/index.jsp
    Server:apache tomcat
    Content-Encoding: gzip
    Content-Length: 80
    Content-Language: zh-cn
    Content-Type: text/html; charset=GB2312
    Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT
    Refresh: 1;url=http://www.it315.org
    Content-Disposition: attachment; filename=aaa.zip
    Transfer-Encoding: chunked
    Set-Cookie:SS=Q0=5Lb_nQ; path=/search
    Expires: -1
    Cache-Control: no-cache
    Pragma: no-cache
    Connection: close/Keep-Alive
    Date: Tue, 11 Jul 2000 18:23:51 GMT

HTTP請求的細節—通用資訊頭

  • 通用資訊頭指既能用於請求,又能用於響應的一些訊息頭。
    Cache-Control: no-cache
    Pragma: no-cache
    Connection: close/Keep-Alive
    Date: Tue, 11 Jul 2000 18:23:51 GMT

  • Web伺服器收到客戶端的http請求,會針對每一次請求,分別建立一個用於代表請求的request物件、和代表響應的response物件。

  • request和response物件即然代表請求和響應,那我們要獲取客戶機提交過來的資料,只需要找request物件就行了。要向客戶機輸出資料,只需要找response物件就行了。

HttpServletResponse

HttpServletResponse物件伺服器的響應。這個物件中封裝了向客戶端傳送資料、傳送響應頭,傳送響應狀態碼的方法。

response常見應用

  • 案例1:302+location實現重定向
    • response.sendRedirect()
    • 實現原理:302狀態碼和location頭即可實現重定向
  • 案例2:使用Refresh實現定時跳轉
  • 案例3:使用content-Type實現向瀏覽器輸出圖片
  • 案例4:檔案下載功能