JavaWeb_day01_HTTP_Servlet

来源:http://www.cnblogs.com/luogg/archive/2016/10/19/5978869.html
-Advertisement-
Play Games

JavaWeb_day01 HTTP協議 HTTP(HyperText Transfer Protocol)超文本傳輸協議,是TCP/IP的應用層協議,用於定義WEB瀏覽器與WEB伺服器之間交換數據的過程以及數據本身的格式. Http協議版本號 : HTTP/1.0 HTTP/1.1 交互步驟 : ...


JavaWeb_day01

HTTP協議

HTTP(HyperText Transfer Protocol)超文本傳輸協議,是TCP/IP的應用層協議,用於定義WEB瀏覽器與WEB伺服器之間交換數據的過程以及數據本身的格式.

Http協議版本號 : HTTP/1.0 HTTP/1.1

交互步驟 : 基於HTTP協議的客戶/伺服器模式的信息交換過程,它分四個過程,建立連接、發送請求信息、發送響應信息、關閉連接。

HTTP/1.1新特性 :

  1. 在一次TCP/IP連接上可以傳送多個HTTP請求和響應。
  2. 多個請求和響應過程可以重疊
  3. 增加了更多的請求頭和響應頭,比如Host等

HTTP請求組成:

這裡寫圖片描述

HTTP響應

這裡寫圖片描述

HTTP->post和get請求方式詳解

  • get把參數顯示在地址欄上,安全級別低,不支持大數據。
  • post把參數封裝請求體中,安全級別高,支持大數據。

HTTP常用狀態碼

200(正常) : 表示一切正常,返回的是正常請求結果

302/307(臨時重定向) : 指出被請求的文檔已被臨時移動到別處,此文檔的新的URL在Location響應頭中給出。

304(未修改) : 表示客戶機緩存的版本是最新的,客戶機可以繼續使用它,無需到伺服器請求。

404(找不到) : 伺服器上不存在客戶機所請求的資源。

500(伺服器內部錯誤) : 伺服器端的程式發生錯誤

TomCat的配置

Tomcat:實現了JSP/Servlet規範,輕量級的伺服器,Servlet容器。(雄貓)
1.解壓tomcat
2.配置JAVA_HOME: 伺服器需要,指向JDK的路徑
3.修改埠號 : 在TomCat->conf->server.xml中修改,修改埠是為了防止埠衝突,修改為http預設埠80
4.eclipse配置tomcat->windows->preferences->搜索server
5.創建server視圖

TomCat目錄結構

這裡寫圖片描述

URL(協議+主機:埠+資源地址)

這裡寫圖片描述

  • server 2.5版本練習

請求消息頭:(做好筆記,記住常用的頭)
作用:向伺服器端傳遞附加信息(暗號指令)

  • Accept:告知伺服器,客戶端可以接受的數據類型(MIME類型)
  • 文件系統:通過文件的擴展名區分不同的文件的。txt jpeg
  • MIME類型:大類型/小類型。
  • txt--->text/plain
  • html---->text/html
  • js---->text/javascript (具體對應關係:Tomcat\conf\web.xml)

  • Accept-Encoding:告知伺服器,客戶端可以接受的壓縮編碼。比如gzip
  • Accept-Language:告知伺服器,客戶端支持的語言。
  • Referer:告知伺服器,從哪個頁面過來的。

作用:統計廣告的投放效果;防止盜鏈。

  • Content-Type:告知伺服器,請求正文的MIME類型
  • 預設類型:application/x-www-form-urlencoded(表單enctype屬性的預設取值)
  • 具體體現:username=abc&password=123
  • 其他類型:multipart/form-data(文件上傳時用的)
  • If-Modified-Since:告知伺服器,當前訪問的資源,緩存中的文件的最後修改時間。
  • User-Agent:告知伺服器,瀏覽器的類型
  • Content-Length:請求正文的數據長度
  • Cookie:(*****重要)會話管理有關

Servlet

Servlet是一個運行在伺服器端的Java小程式,通過HTTP協議用於接收來自客戶端請求,併發出響應。

Servlet中的方法

public void service(ServletRequest req,ServletResponse res)
throws ServletException,java.io.IOException

ServletRequest req:代表著請求對象,該對象中有HTTP協議的請求部分的所有內容。它的實現類由伺服器提供的,封裝數據也是伺服器來做的。
ServletResponse res:代表著響應對象,該對象中由我們寫數據(HTTP協議的響應部分)進去。它的實現類也是由伺服器提供的。
service:由伺服器調用,每次請求都會調用一次。伺服器採用的是多線程機制。

Servlet執行過程

1.客戶端訪問Tomcat訪問地址:http://localhost:8080/firstServlet/hello
2.Tomcat解析客戶端的訪問地址
3.Tomcat找firstServlet應用。
4.找之間先搜索web.xml
5.接著就找到自己的類。
6.執行service
7.給用戶看到結果

Servlet生命周期

  1. 誕生:用戶第一次訪問時,由容器創建他的實例。
  2. 活著:一旦創建就駐留記憶體(單例)。每次用戶的訪問,容器都會調用sevice方法發出響應(多線程)
  3. 死亡:應用被卸載或者Tomcat關閉了

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 文檔目錄 本節內容: 配置ABP 替換內置服務 配置模塊 為一個模塊創建配置 替換內置服務 ABP在啟動時,提供基礎框架和模型來配置和模塊化。 置ABP 在預初始化事件中進行配置,示例: ABP進行了模塊化設計,不同的模塊都能配置ABP。例如,不同的模塊都能添加導航提供器把自己的菜單項加入到主菜單中 ...
  • 一、基本選擇器: ID選擇器:$("#id名稱") 例如:$("#div1").css("width","100px"); CLASS選擇器:$(".id名稱") 併列$("#id名稱,#id名稱") 後代$("#id名稱 名稱")二.過濾選擇器 第一個:$(".id名稱:first") 最後一個: ...
  • 《深入理解Java虛擬機》第二三章摘要 Java記憶體區域與記憶體溢出 Java虛擬機中的記憶體分配圖: 各個區域的特性總結如下表: 補充說明: 當多線程情形下,可能多個線程要在堆上分配記憶體,那麼可能出現記憶體分配的同步問題,解決方案有兩個,一個就是同步記憶體分配動作;另一個就是採用TLAB,即在Java堆中 ...
  • 英文文檔: Return a Boolean value, i.e. one of True or False. x is converted using the standard truth testing procedure. If x is false or omitted, this ret ...
  • 一.在java中提供的一些修飾符,這些修飾符可以修飾類、變數和方法,在java中常見的修飾符有:abstract(抽象的)、static(靜態的)、public(公共的)、protected(受保護的)、private(私有的)、synchronized(同步的)、native(本地的)、trans ...
  • 首先,說明一下多線程的應用場景:當python處理多個任務時,這些任務本質是非同步的,需要有多個併發事務,各個事務的運行順序可以是不確定的、隨機的、不可預測的。計算密集型的任務可以順序執行分隔成的多個子任務,也可以用多線程的方式處理。但I/O密集型的任務就不好以單線程方式處理了,如果不用多線程,只能用 ...
  • 在現實生活中,記錄日誌非常重要。銀行轉賬時會有轉賬記錄;飛機飛行過程中,會有黑盒子(飛行數據記錄器)記錄飛行過程中的一切。如果有出現什麼問題,人們可以通過日誌數據來搞清楚到底發生了什麼。對於系統開發、調試以及運行,記錄日誌都是同樣的重要。如果沒有日誌記錄,程式崩潰時你幾乎就沒辦法弄明白到底發生了什麼 ...
  • 內置對象:不需要預先聲明就可以在腳本代碼和表達式中隨意使用,有以下特點 1.由JSP規範提供,不用編寫者實例化 2.提供Web容器實現和管理 3.所有JSP頁面均可用 4.只有在腳本元素的表達式或者代碼中才可使用(<%=使用內置對象%>或<%使用內置對象%>) 輸入輸出對象:request,resp ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...