天天看點

JavaWeb

JavaWeb

java web

1 基本概念

1.1 前言

web開發:

  • web,網頁的意思,www.baidu.com
  • 靜态web
  • html,css
  • 提供給所有人看的資料始終不會發送變化
  • 動态web
  • 淘寶,幾乎所有的網址
  • 提供給所有人看的資料始終會發送變化,每個人在不同的時間,不同的地點看到的資訊各部相同
  • 技術棧:Servlet/jsp,ASP,PHP,

在JAVA中,動态web資源開發的技術統稱為Javaweb

1.2 web應用程式

web應用程式:可以提供流量器通路的程式;

  • a.html,b.html....多個web資源,這些web資源可以被外界通路,對外界提供服務
  • 你們能通路到任何一個頁面或者資源,都存在于這個世界的某一個計算機上
  • URL:
  • 這個統一的web資源會被放在同一個檔案夾下,web應用程式-->Tomcat:伺服器
  • 一個web應用由多部分組成(靜态web,動态web)
  • html.css,js
  • jsp,servlet
  • java程式
  • jar包
  • 配置檔案(Properties)

web應用程式編寫完畢後,若想提供給外界通路:需要一個伺服器來統一管理;

1.3 靜态web

  • *.htm , *.html ,這些都是網頁的字尾,如果伺服器上一直存在一直存在這些東西,我們就可以直接進行讀取.網絡
    JavaWeb
  • 靜态web存在的缺點
  • web頁面無法動态更新,所有使用者看到都是同一個頁面
  • 輪播圖,點選特效:僞動态
  • JavaScript [實際開發中,它用的最多]
  • VBScript
  • 它無法和資料庫互動(資料無法持久化,使用者無法互動)

1.4 動态web

頁面會動态展示:"web的頁面展示的效果因人而異"

JavaWeb

缺點:

  • 假如伺服器的動态web資源出現錯誤,我們需要重新編寫我們的背景程式,重新釋出;
  • 停機維護

優點:

  • web頁面可以動态更新,所有使用者看到都不是同一個頁面
  • 它可以與資料庫互動(資料持久化:注冊,商品資訊,使用者資訊.....)
JavaWeb

2.0 web伺服器

2.1技術講解

  • ASP
  • 微軟:國内最早流行的就是ASP;
  • 在HTML中嵌入了VB的腳本,ASP+COM;
  • 在ASP開發中,基本一個頁面都有幾千行的業務代碼,頁面極其混亂
  • 維護成本高!
  • C#
  • IIS
<h1> <h1>
    <%
    Sytem.out.println("hello")
    %>
<h1><h1>      
  • PHP
  • PHP開發速度很快,功能很強大,跨平台沒帶嗎,代碼很簡單(70%,WP)
  • 無法承載大通路量的情況(局限性)
  • JSP/Servlet:

    B/S:浏覽器和伺服器

    C/S:用戶端和伺服器

  • sun公司主推的B/S架構
  • 基于java語言的(所喲的大公司,或者一些開源的元件,都是用java寫的)
  • 開源承載三高問題帶來的影響
  • 文法像ASP ,ASP-->JSP,加強市場強度;

    .....

2.2 web伺服器

伺服器是一種被動的操作,用來處理使用者的一些請求和給使用者一些響應資訊;

微軟的:ASP....,Windows中自帶的

Tomcat

JavaWeb

面向百度程式設計;

Tomcat是Apache 軟體基金會(Apache Software Foundation)的Jakarta 項目中的一個核心項目,由Apache、Sun 和其他一些公司及個人共同開發而成。由于有了Sun 的參與和支援,最新的Servlet 和JSP 規範總是能在Tomcat 中得到展現,Tomcat 5支援最新的Servlet 2.4 和JSP 2.0 規範。因為Tomcat 技術先進、性能穩定,而且免費,因而深受Java 愛好者的喜愛并得到了部分軟體開發商的認可,成為目前比較流行的Web 應用伺服器。
Tomcat 伺服器是一個免費的開放源代碼的Web 應用伺服器,屬于輕量級應用伺服器,在中小型系統和并發通路使用者不是很多的場合下被普遍使用,是開發和調試JSP 程式的首選。對于一個初學者來說,可以這樣認為,當在一台機器上配置好Apache 伺服器,可利用它響應HTML(标準通用标記語言下的一個應用)頁面的通路請求。實際上Tomcat是Apache 伺服器的擴充,但運作時它是獨立運作的,是以當你運作tomcat 時,它實際上作為一個與Apache 獨立的程序單獨運作的。
訣竅是,當配置正确時,Apache 為HTML頁面服務,而Tomcat 實際上運作JSP 頁面和Servlet。另外,Tomcat和IIS等Web伺服器一樣,具有處理HTML頁面的功能,另外它還是一個Servlet和JSP容器,獨立的Servlet容器是Tomcat的預設模式。不過,Tomcat處理靜态HTML的能力不如Apache伺服器。目前Tomcat最新版本為10.0.5。
      

幹個三五年,可以嘗試手寫Tomcat伺服器:

下載下傳Tomcat:

  1. 安裝 or 解壓
  2. 了解配置檔案及項目結果
  3. 這個東西的作用

3.0 Tomcat

3.1 安裝Tomcat

Tomcat官網 : ​​https://tomcat.apache.org/​​

  • 下載下傳
    JavaWeb
  • 解壓
    JavaWeb

3.2 Tomcat啟動和配置

檔案夾作用:

JavaWeb

啟動.關閉 Tomcat

目錄:apache-tomcat-9.0.46\bin\startup.bat

JavaWeb

通路測試:​​http://localhost:8080/​​

可能遇到的問題:

  1. java環境變量沒有配置
  2. 閃退問題:需要配置相容性
  3. 亂碼問題:配置檔案中設定

3.3 配置

JavaWeb

可以配置啟動的端口号

  • tomcat的預設端口号為:8080
  • mysql的預設端口為:3306
  • http:80
  • https:443
<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
      

可以配置主機的名稱

  • 預設的主機名為:localhost =>127.0.0.1
  • 預設網址應用存放的位置為:webapps
<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
      

高難度面試題:

網址是如何進行通路的

  1. 輸入一個域名;回車
  2. 檢查本機的:C:\Windows\System32\drivers\etc\hosts 配置檔案下有沒有這個域名的映射;
  1. 有:直接傳回對應的ip位址,這個位址中,也有我們需要通路的web程式,可以直接通路
  2. 沒有:去DNS伺服器上找,找到的話就傳回,找不到就傳回找不到;
    JavaWeb

4.可以配置一個環境變量(可選項)

3.4 釋出一個 web網址

不會就先模仿

  • 将自己寫的網站,放到伺服器(Tomcat)中指定的web應用的檔案夾(webapps)下,就可以通路了

    網站應該有的結構

webapps:Tomcat伺服器的web目錄
  - Root
  - xianyudoufu:網站的目錄名
    - WEB-INF
      - classes
      - lib:web應用依賴的jar包
      - web.xml: 網站配置檔案
    - index.html 預設的首頁
    - static
      - css
        - style.css
      - js
      - img
    -.....
      

4 Http

4.1 什麼是HTTP

超文本傳輸協定(Hyper Text Transfer Protocol,HTTP)是一個簡單的請求-響應協定,它通常運作在TCP之上。

  • 文本:html,字元串,~...
  • 超文本:圖檔,音樂,視訊,定位,地圖,....
  • 預設端口 80

    https:安全的

  • 預設端口:443

4.2 兩個時代

  • http1.0
  • http/1.0:用戶端可以與web伺服器連接配接後,隻能獲得一個web資源,斷開連接配接
  • http2.0
  • http/1.1:用戶端可以與web伺服器連接配接後,可以獲得多個web資源,斷開連接配接

4.3 Http請求

  • 用戶端---發請求(request)---伺服器
Request URL: https://www.baidu.com/   請求位址
Request Method: GET    get方法/post方法
Status Code: 200 OK    狀态碼:200
Remote(遠端)Address: 180.101.49.11:443
      
Accept: text/html,
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9 語言
Connection: keep-alive

      

1 請求行

  • 請求行中的請求方式:get
  • 請求方式:GET,POST,HEAD,delete,pur,tract
  • get:請求能夠攜帶的參數比較少,大小有限制,會在浏覽器的Url位址欄顯示資料内容,不安全,但高效\
  • post:請求能夠攜帶的參數沒有限制,大小沒有限制,不會在浏覽器的url位址欄顯示資料内容,安全但不高效.

2 消息頭

Accept: 告訴浏覽器,它所支援的資料類型
Accept-Encoding: 支援哪種編碼根式,GBK UTF-8 GB2312 ISO8859-1
Accept-Language: 告訴浏覽器,它的語言環境
cache-Control: 緩存控制
Connection: 告訴流量器,請求完成是斷開還是保持連接配接
HOST:主機.../.
      

4.4 Http響應

  • 伺服器---響應----用戶端

    百度:

Cache-Control: private   緩存控制
Connection: keep-alive   連接配接:
Content-Encoding: gzip   編碼
Content-Type: text/html;charset=utf-8   類型
      

1. 響應體

Accept: 告訴浏覽器,它所支援的資料類型
Accept-Encoding: 支援哪種編碼根式,GBK UTF-8 GB2312 ISO8859-1
Accept-Language: 告訴浏覽器,它的語言環境
cache-Control: 緩存控制
Connection: 告訴流量器,請求完成是斷開還是保持連接配接
HOST:主機.../.
Refresh:告訴用戶端,多久重新整理一次
Location:讓網頁重新定位:
      

2.響應狀态碼

200:請求響應成功

3xx:請求重定向

- 重定向:你重新到我給你的新位置去;

4xx:找不到資源

  • 資源不存在

    5xx:服務代碼錯誤 500 502:網關錯誤

    常見面試題:

    當你的浏覽器中位址欄輸入位址并回車的一瞬間頁面能夠展示回來,經曆了什麼?

    三次握手,四次揮手