注冊用戶即可下載全站資源 關注Java幫幫微信公眾號
 

Web-第七天 HTTP&Tomcat學習【悟空教程】

96
發表時間:2018-11-07 16:02來源:Java幫幫-微信公眾號

HTTP&Tomcat

今日內容介紹

  • 訪問tomcat下已經發布的web項目

今日內容學習目標

  • 能夠描述出瀏覽器和服務器交互過程

  • 能夠產生HTTP請求協議格式

  • 能夠產生HTTP響應協議格式

  • 看得懂WEB項目的目錄結構

  • 使用Tomcat發布web項目,并成功訪問

  • 在eclipse下發布web項目

第1章 訪問tomcat下已經發布的web項目

為了可以通過瀏覽器訪問到自己tomcat下的web項目,我們需要先了解以下內容:


1.1 HTTP協議的概述:

1.1.1 什么是HTTP協議

HTTP協議:超文本傳輸協議(HTTP,HyperText Transfer Protocol)是互聯網上應用最為廣泛的一種網絡協議。用于定義WEB瀏覽器與WEB服務器之間交換數據的過程。

1.1.2 HTTP協議的作用及特點

HTTP協議的作用

HTTP協議是學習JavaWEB開發的基石,不深入了解HTTP協議,就不能說掌握了WEB開發,更無法管理和維護一些復雜的WEB站點。

HTTP協議的特點

  • 基于請求/響應模型的協議。請求和響應必須成對;先有請求后有響應。

  • HTTP協議默認的端口:80

    • 例如:http://polkscan.com:80


1.1.3 HTTP協議的版本:

  • HTTP/1.0,發送請求,創建一次連接,獲得一個web資源,連接斷開。

  • HTTP/1.1,發送請求,創建一次連接,獲得多個web資源,連接斷開。


1.1.4 HTTP協議的組成:

HTTP請求協議、HTTP響應協議。

HTTP請求包括:請求行、請求頭、請求體

HTTP響應包括:響應行、響應頭、響應體


1.1.5 HTTP協議入門

1.1.5.1 準備工作

準備工作進行的步驟,步驟1和2是文檔后半段講解的內容,此處暫時了解即可。

1. 創建項目,JavaWeb項目,選擇版本為2.5

  • 步驟1:在eclipse中New/Dynaimc Web Project

  • 步驟2:創建day12 web項目


2. 測試用例,編寫“form.html”頁面,并提供兩個表單,分別設置表單的提交方式為:get和post。將表單提交位置設置成#,表示提交到當前表單。

<form action="#" method="get">

用戶名:<input type="text" name="username" value="jack" /> <br/>

密碼:<input type="text" name="password" value="1234" /> <br/>

<input type="submit" value="get提交" />

</form>

<form action="#" method="post">

用戶名:<input type="text" name="username" value="jack" /> <br/>

密碼:<input type="text" name="password" value="1234" /> <br/>

<input type="submit" value="post提交" />

</form>

3. 安裝HttpWatch,用于抓取HTTP協議的數據包(抓包)

操作系統不同,瀏覽器不同,需要的HttpWatch的版本不同。

1.1.5.2 HTTP請求的詳解

HTTP請求格式:請求行、請求頭、請求體。

如下圖,我們提供兩種請求方式抓包結果:

GET請求抓包數據:

POST請求抓包數據:

  • 請求行

例如:POST /day09/01.http/form.html HTTP/1.1

請求行必須在HTTP請求格式的第一行。

請求行格式:請求方式 資源路徑 協議/版本

請求方式:協議規定7種,常用兩種:GETPOST

GET請求:

將請求參數追加在URL后面,不安全。例如:form.html?username=jack&username=1234

URL長度限制GET請求方式的數據大小。

沒有請求體

POST請求

請求參數顯示請求體處,較安全。

請求數據大小沒有顯示。

只有表單設置為method=post”才是post請求.其他的都是get請求。

常見GET請求:地址欄直接訪問、<a href=””><img src=””>

  • 請求頭

例如:Host: localhost:8080

請求頭從第二行開始,到第一個空行結束。及請求頭和請求體之間存在一個空行。

請求頭通常以鍵值對(key:value)方式傳遞數據。

key為規范規定的固定值

value key對應的取值,通常是一個值,可能是一組。

常見請求頭

描述 (紅色掌握,其他了解)

Referer

瀏覽器通知服務器,當前請求來自何處。如果是直接訪問,則不會有這個頭。常用于:防盜鏈

If-Modified-Since

瀏覽器通知服務器,本地緩存的最后變更時間。與另一個響應頭組合控制瀏覽器頁面的緩存。

Cookie

與會話有關技術,用于存放瀏覽器緩存的cookie信息。

User-Agent

瀏覽器通知服務器,客戶端瀏覽器與操作系統相關信息

Connection

保持連接狀態。Keep-Alive 連接中,close 已關閉

Host

請求的服務器主機名

Content-Length

請求體的長度

Content-Type

如果是POST請求,會有這個頭,默認值為application/x-www-form-urlencoded,表示請求體內容使用url編碼

Accept

瀏覽器可支持的MIME類型。文件類型的一種描述方式。

MIME格式:大類型/小類型[;參數]

例如:

  text/html html文件

  text/csscss文件

  text/javascriptjs文件

  image/*,所有圖片文件

Accept-Encoding

瀏覽器通知服務器,瀏覽器支持的數據壓縮格式。如:GZIP壓縮

Accept-Language

瀏覽器通知服務器,瀏覽器支持的語言。各國語言(國際化i18n

  • 請求體

通常情況下,只有post請求方式才會使用到請求體,請求體中都是用戶表單提交的數據,每一項數據都使用鍵值對(k=v),多組值使用&相連。

例如;username=jack&password=1234


1.1.5.3 HTTP響應的詳解

HTTP響應格式:響應行、響應頭、響應體

如下圖,我們提供的響應的抓包結果(HttpWatch只支持GBK編碼,否則中文會出現亂碼)

  • 響應行

例如:HTTP/1.1 200 OK

格式:協議/版本 狀態碼  狀態碼描述

狀態碼:服務器與瀏覽器用于確定狀態的固定數字號碼

200 :請求成功。

302 :請求重定向。

304 :請求資源沒有改變,訪問本地緩存。

404 :請求資源不存在。通常是用戶路徑編寫錯誤,也可能是服務器資源已刪除。

500 :服務器內部錯誤。通常程序拋異常。

  • 響應頭

響應頭也是用的鍵值對k:v

服務器通過響應頭來控制瀏覽器的行為,不同的頭瀏覽器操作不同。

常見請求頭

描述

Location

指定響應的路徑,需要與狀態碼302配合使用,完成跳轉。

Content-Type

響應正文的類型(MIME類型)

取值:text/html;charset=UTF-8

Content-Disposition

通過瀏覽器以下載方式解析正文

取值:attachment;filename=xx.zip

Set-Cookie

與會話相關技術。服務器向瀏覽器寫入cookie

Content-Encoding

服務器使用的壓縮格式

取值:gzip

Content-length

響應正文的長度

Refresh

定時刷新,格式:秒數;url=路徑。url可省略,默認值為當前頁。

取值:3;url=www.polkscan.com    //三秒刷新頁面到www.polkscan.com

Server

指的是服務器名稱,默認值:Apache-Coyote/1.1。可以通過conf/server.xml配置進行修改。<Connector port="8080" ... server="javahelp"/>

Last-Modified

服務器通知瀏覽器,文件的最后修改時間。與If-Modified-Since一起使用。

  • 響應體

響應體,就是服務器發送給瀏覽器的正文。

1.2 Web開發概述

1.2.1 WEB通信

WEB采用B/S通信模式,通過超文本傳送協議(HTTP, Hypertext transport protocol)進行通信。通過瀏覽器地址欄編寫URL,向服務器發送一個請求,服務器端根據請求進行相應的處理,處理完成之后,會向瀏覽器作出一個響應,及將服務器端資源發送給瀏覽器。

1.2.2 軟件架構

  • C/S架構:Client/Server 客戶端/服務器。要求客戶端電腦安裝一個客戶端程序。

    • 常見應用:QQ,迅雷,360,旺旺 等

    • 優點:

   1. 用戶體驗好,效果炫

   2. 對信息安全的控制較強

   3. 應用服務器運行數據負荷較輕,部分計算功能在客戶端完成。

    • 缺點:

   1. 占用硬盤空間

   2. 維護麻煩

   3. 安裝使用依賴其他條件

  • B/S架構:Browser/Server 瀏覽器/服務器 。通過瀏覽器與服務器交互,不需要安裝其他程序

    • 常見應用:網銀系統,淘寶,京東 12306 等

    • 優點:

   1. 維護和升級簡單,無縫升級。

   2. 不用必須安裝程序,操作系統內置了瀏覽器。

    • 缺點:

   1. 動畫效果受瀏覽器限制

   2. 對信息安裝控制較差。例如:網銀就需要使用U盾,在瀏覽器端加密。

   3. 應用服務器運行數據負荷較重。大部分計算都在服務器端,增加服務器壓力。使用Ajax可以改善部分用戶體驗。


1.2.3 WEB資源介紹

靜態資源:指web頁面中供人們瀏覽的數據始終是不變。比如:HTML、CSS、JS、圖片、多媒體。

動態資源:指web頁面中供人們瀏覽的數據是由程序產生的,不同時間點訪問web頁面看到的內容各不相同。比如:JSP/Servlet、ASP、PHP

1.2.4 WEB服務器

JCP(Java Community Process) Java技術規范制定與更新的國際組織。主要維護規范包括:J2ME、J2SE、J2EE,XML等。

J2EE 企業級開發Java規范。標準規范包括:

servlet、jsp、jdbc、xml、jta、javamail等。在java中規范就是接口。J2EE又稱為JavaEE。

WEB服務器對JavaEE規范部分或全部支持(實現),也就是WEB服務器實現部分或全部接口。

常見的WEB服務器:

1. Tomcat:Apache組織提供一個免費的小型的服務器軟件。支持Servlet和JSP規范。

2. WebLogic:Bea公司的一個收費的大型的服務器軟件,后被Oracle收購。支持EE的所有的規范

3. WebSphere:IBM公司的一個收費的大型的服務器軟件,支持EE的所有的規范。

4. JBoss:是一個基于J2EE的開放源代碼的應用服務器。JBoss是一個管理EJB的容器和服務器,JBoss核心服務不包括支持servlet/JSP的WEB容器,一般與Tomcat或Jetty綁定使用。

1.2.5 URL請求路徑

URL (Uniform Resource Locator) ,統一資源定位符是對互聯網上資源位置的一種表示,互聯網上的每個文件都有一個唯一的URL。

完整格式如下

協議://域名:端口號/資源位置?參數=

協議,httphttpsftp

域名,域名或IP地址,都可以訪問WEB資源

端口號,程序必須使用端口號,才可以讓另一個計算機訪問。http協議的默認端:80

資源位置,用于描述WEB資源再服務器上的位置。

參數=值,瀏覽器和服務器交互傳遞的數據

例如:

常見路徑

http://polkscan.com:80/subject/javaeezly/index.shtml


百度搜索“Java幫幫

http://www.baidu.com/s?cl=3&wd=%B4%AB%D6%C7%B2%A5%BF%CD

1.3 Tomcat介紹

1.3.1 概述

Tomcat 服務器是一個免費的開放源代碼的Web 應用服務器,屬于輕量級應用服務器,在中小型系統和并發訪問用戶不是很多的場合下被普遍使用,是開發和調試JSP 程序的首選。

支持Servlet和JSP 規范,且最新的Servlet 和JSP 規范總是能在Tomcat 中得到體現。

1.3.2 Tomcat版本(了解)

tomcat 目前存在很多版本,希望大家了解tomcat的版本,從而知道自己的創建的項目使用的是幾版本規范,不同版本的規范技術可能不同。我們學習的WEB5.0,Servlet規范2.5,tomcat至少使用6版本。

官網地址:http://tomcat.apache.org/whichversion.html

Tomcat版本

Servlet版本

JSP版本

EL版本

JavaEE版本

JDK版本

7.0.x

3.0

2.2

2.2

6.0

6 (1.6)

6.0.x

2.5

2.1

N/A

5.0

5 (1.5)

1.3.3 安裝Tomcat

  • 步驟一:下載一個tomcat服務器軟件.

http://tomcat.apache.org/download-70.cgi

  • 步驟二:解壓下載好的zip文件.

將解壓后的文件copy到一個沒有中文和空格的路徑下即可.

例如:D:\java\tomcat\apache-tomcat-7.0.68

1.3.4 Tomcat目錄結構

bin:腳本目錄

啟動腳本:startup.bat

停止腳本:shutdown.bat

conf:配置文件目錄 (config /configuration)

核心配置文件:server.xml

用戶權限配置文件:tomcat-users.xml

所有web項目默認配置文件:web.xml

lib:依賴庫,tomcatweb項目中需要使用的jar

logs:日志文件.

localhost_access_log.*.txt tomcat記錄用戶訪問信息,星*表示時間。

例如:localhost_access_log.2016-02-28.txt

temp:臨時文件目錄,文件夾內內容可以任意刪除。

webapps:默認情況下發布WEB項目所存放的目錄。

worktomcat處理JSP的工作目錄。

1.3.5 Tomcat啟動和訪問

  • tomcat解壓目錄/bin/startup.bat 雙擊運行啟動tomcat

  • 訪問路徑:http://localhost:8080/

1.3.6 Tomcat常見問題

1.3.6.1 JAVA_HOME的配置

如果沒有配置JAVA_HOME環境變量,在雙擊“startup.bat”文件運行tomcat時,將一閃立即關閉。且必須配置正確,及JAVA_HOME指向JDK的安裝目錄

當同一臺計算機啟動兩個tomcat時,第二個tomcat將會在控制臺拋異常,摘要信息如下:


1.3.6.2 端口號沖突

嚴重: Failed to initialize end point associated with ProtocolHandler ["http-bio-8080"]

java.net.BindException: Address already in use: JVM_Bind <null>:8080

...

Caused by: java.net.BindException: Address already in use: JVM_Bind

...

控制臺將出現大量異常信息,描述的是3個端口被占用(808080098005

通過 $JAVA_HOME/conf/server.xml修改端口號。

1.4 web項目目錄結構(重要)

在JavaEE規范中,WEB項目存在一定的目錄結構,具體結構如下:

項目名稱  webapps 文件夾)

|-----靜態資源.HTMLCSSJS

|-----WEB-INF   (不能直接通過瀏覽器進行訪問)

           |----web.xml  當前WEB項目的核心配置,Servlet2.5必須有,3.0可省略。

           |----lib    當前WEB項目所需要的第三方的jar的存放位置。

           |----classes  Java源碼編譯后生成class文件存放的位置。


1.5 eclipse發布web項目

1.5.1 配置Tomcat

  • 步驟1:獲得服務器運行環境配置,Window/Preferences/Server/Runtime Environmen

  • 步驟2:添加服務器

  • 步驟3:選擇服務器在硬盤的地址,然后所有的都是確定/Next/Finish

  • 步驟4:完成成功

  • 步驟5:設置發布位置

修改tomcat發布的位置

1.5.2 發布web項目

  • 步驟1:項目右鍵/Run As/Run on Server

  • 步驟2:選擇WEB服務器執行程序。

  • 步驟3:選擇或添加文本框


第2章 Servlet快速入門

2.1 概述

今天我們已經學習了tomcat和web項目使用和編寫,明天我們將學習動態資源技術Servlet,今天我們將編寫servlet的入門案例,所有步驟為固定內容,今天只需完全模仿。


2.2 編寫步驟

1. 創建 day12 web項目


2. 創建類,繼承HttpServlet,復寫doGet方法

package cn.com.javahelp.demo01.a_servlet;

import java.io.IOException;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class HelloServlet extends HttpServlet{

@Override

public void doGet(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

System.out.println("get請求將執行");

}

}


3. 編寫配置文件

<servlet>

<servlet-name>helloServlet</servlet-name>

<servlet-class>cn.javahelp.demo01.a_servlet.HelloServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>helloServlet</servlet-name>

<url-pattern>/hello</url-pattern>

</servlet-mapping>

4. 瀏覽器訪問

在瀏覽器地址欄輸入:http://localhost:8080/day12/hello

  • 瀏覽器顯示空白頁面

  • 控制打印信息

第3章 總結


支付寶贊助-Java幫幫社區
微信贊助-Java幫幫社區
Java幫幫公眾號生態

Java幫幫公眾號生態

總有一款適合你

Java幫幫-微信公眾號

Java幫幫-微信公眾號

將分享做到極致

Python幫幫-公眾號

Python幫幫-公眾號

人工智能,爬蟲,學習教程

大數據驛站-微信公眾號

大數據驛站-微信公眾號

一起在數據中成長

九點編程-公眾號

九點編程-公眾號

深夜九點學編程

程序員生活志-公眾號

程序員生活志-公眾號

互聯網,職場,程序員那些事兒

Java幫幫學習群生態

Java幫幫學習群生態

總有一款能幫到你

Java學習群

Java學習群

與大牛一起交流

大數據學習群

大數據學習群

在數據中成長

九點編程學習群

九點編程學習群

深夜九點學編程

python學習群

python學習群

人工智能,爬蟲

測試學習群

測試學習群

感受測試的魅力

Java幫幫生態承諾

Java幫幫生態承諾

一直堅守,不負重望

初心
勤儉
誠信
正義
分享
合作品牌 非盈利生態-優質內容分享傳播者
關于我們
友鏈申請
友鏈交換:加幫主QQ2524138991 留言即可 24小時內答復  
全站內容非商業用途,內容來源于網友,并遵循 許可,如有異議請聯系客服。
會員登錄
獲取驗證碼
登錄
登錄
我的資料
留言
回到頂部