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。
- 如請求方式為GET方式,則可以在請求的URL地址後以?的形式帶上交給伺服器的資料,多個數據之間以&進行分隔,例如:
-
如請求方式為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常見應用
獲取瀏覽器型別
防盜鏈
各種表單輸入項資料的獲取
text
、password
、radio
、checkbox
、
file
、select
、textarea
、hidden
、
image
、button
給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:檔案下載功能