JAVA WEB 學習手記(一)

開始之前,先放一張百度腦圖:

Java Web開發技術棧
java web

web介紹

web相關概念回顧

  1. 軟件架構
    C/S:客戶端端/服務器端
    B/S 瀏覽器/服務器端(most)
    (B/S架構零維護,開發快速)

  2. 資源分類 靜態資源(所有用戶訪問到的結果一樣html,css,js) & 動態資源(每個用戶訪問相同資源,得到結果不一樣servlet jsp php asp)

    • 瀏覽器裏面有靜態資源的解析引擎,可以直接解析訪問到的靜態資源
    • 當動態資源被訪問時,需要先轉爲靜態資源 ,再返回給瀏覽器(重點)
    • 請求與響應模型
  3. 網絡通信三要素

    • IP地址 : 省略

    • 端口 :應用程序在計算機中的唯一標識(0~65536範圍)

    • 傳輸協議:規定數據傳輸的規則

      基礎協議:

      1. tcp協議:三次握手,速度稍慢
      2. udp協議:不安全的廣播協議,速度快

web服務器軟件

web服務器軟件:接收用戶的請求,處理請求,做出響應

  • 在web服務器軟件中,可以部署web項目,讓用戶通過瀏覽器來訪問這些項目
  • web容器
  • 與java相關的web服務器軟件
    1. weblogic:oracle公司,大型的javaEE服務器,支持所有的javaEE規範,收費
    2. webSphere:IBM公司, 大型的,支持所有,收費
    3. Tomcat:Apache基金組織,中小型javaEE服務器,僅支持少量,開源的,免費的
  • JavaEE:java語言在企業級開發中使用的技術規範的總和,一共規定了13項大的規範

Tomcat(web服務器軟件)

Tomcat簡介

  1. 下載:官網 8.5.31 core

  2. 安裝:解壓安裝壓縮包 注意,安裝目錄不要有中文和空格

  3. 卸載:刪除目錄即可

  4. 啓動:雙擊bin目錄下 startup.bat文件 Linux下是startup.sh文件

    啓動後瀏覽器訪問http://121.0.0.1:8080(默認) or http://localhost:8080 即可訪問運行成功的tomcat

    • 可能遇到的問題一:命令行窗口一閃而過 原因:未正確配置JAVA_HOME環境變量

    • 啓動報錯:可以去logs文件去看報錯信息,根據報錯信息解決

      一般會將tomcat的默認端口改爲80,80端口是http協議的默認端口

      可以在conf文件夾中的server.xml中修改端口號。

  5. 關閉:

    • 正常關閉:
      • bin目錄下shutdown.bat
      • ctrl + c
    • 強制關閉:點擊窗口上面的關閉

    後續的啓動和關閉大部分其實都是在IDE中執行。

  6. 配置:

    • 部署項目的方式

      • 直接將項目文件放到webapps中

        簡化部署:將項目打包成war包,再將war包放到webapps目錄下,war包會自動解壓縮

      • 在conf文件夾中的server.xml配置

        找到標籤,在其中添加如下代碼

        < Context docBase=“filepath” path = “/name” />

        docBase是指你項目文件在你電腦上路徑,path是指項目的訪問路徑,是虛擬路徑。

      • conf/server.xml是tomcat的核心配置文件,在裏面配置不安全

        且修改後要重啓才生效

        在 conf/catalina/localhost 目錄下創建一個任意名稱的xml文件

        在文件中編寫

        < Context docBase=“filepath” />

        此時虛擬目錄是xml文件的名稱

    • 靜態項目和動態項目

      • 目錄結構

        • java動態項目的目錄結構

          – 項目的根目錄

          ​ – WEB -INF 目錄

          ​ – web.xml :web的核心配置文件

          ​ – Classes目錄:放置字節碼文件的目錄

          ​ – lib目錄:放置依賴的jar包
          C:\Users\lkold\AppData\Roaming\Typora

Tomcat集成到IDEA,創建部署項目

關於這一部分網上有很多教程,建議使用IDEA或者eclipse。但現在似乎越來越多的轉向了IDEA。
在這裏插入圖片描述
此處我用到的tomcat版本是8.5.31,Java EE 7,javaEE對應servlet3.1版本。
在這裏插入圖片描述
成功創建後,我們可以看到項目的目錄同我們之前說過的tomcat目錄是一樣的。

servlet

概念及入門實踐

  • 概念:運行在服務器端的小程序(server applet)

    • servlet就是一個接口,定義了java類被瀏覽器訪問(tomcat識別)的規則
    • 將來我們定義一個類,實現servlet接口,複寫方法
  • 入門實踐

    1. 創建javaEE項目

    2. 定義一個類,實現Servlet接口

    3. 實現接口中的抽象方法

      代碼:

      import javax.servlet.*;
      import java.io.IOException;
      
      public class servletDemo1 implements Servlet {
      	/*Servlet生命週期方法*/
          //當Servlet第一次被創建對象時執行該方法,該方法在整個生命週期中只執行一次
          public void init(ServletConfig arg0) throws ServletException {
              System.out.println("=======init=========");
          }
          //提供服務方法方法:對客戶端響應的方法,該方法會被執行多次,每次請求該servlet都會執行該方法
          public void service(ServletRequest arg0, ServletResponse arg1)
                  throws ServletException, IOException {
              System.out.println("hello,servlet");
          }
          //銷燬方法:當Servlet被被正常銷燬時執行該方法,只執行一次
          public void destroy() {
              System.out.println("******destroy**********");
          }
          /**
          *獲取ServletConfig對象
          *ServletConfig就是servlet的配置對象
          */
          public ServletConfig getServletConfig() {
              return null;
          }
      	/**
      	*獲取Servlet的一些信息,版本,作者等
      	*/
          public String getServletInfo() {
              return null;
          }
      }
      

    配置Servlet

servlet

  • 執行原理:

    1. 當服務器接收到客戶端瀏覽器的請求後,會解析請求的URL路徑,獲取訪問的Servlet的資源路徑
    2. 查找 web.xml文件,是否有對應的<url - pattern> 標籤體內容
    3. 如果有,則在找到對應的<sevlet - class> 全類名
    4. tomcat會將字節碼文件加載進內存,並且創建其對象
    5. 調用其方法
  • 幾個重要問題

    • servlet什麼時候被創建

      1. 默認情況下,第一次被訪問的時候,Servlet被創建

      2. 可以配置執行servlet的創建時機
        servlet

    • Servlet的init方法,只執行一次,說明一個Servlet在內存中只存在一個對象,Servlet是單例的

      當多個用戶同時訪問時,可能存在線程安全問題

      解決儘量不要在Servlet裏面定義成員變量,即使定義了成員變量,也不要對其修改

    • init方法一般用於加載資源,destroy方法一般用於釋放資源

  • Servlet3.0

    1. 優點:支持註解配置,可以不需要web.xml

    2. 步驟

      1. 創建javaEE項目,選擇servlet的版本3.0以上,可以不創建web.xml

      2. 定義一個類,實現servlet的接口

      3. 重寫方法

      4. 在類上使用@WebServlet註解,進行配置
        servlet
        一個servlet可以定義多個訪問路徑或多層路徑

        @WebServlet(" .demo1", "/usr/", “/usr/demo3”)

servlet的體系結構

servlet
推薦第三種,繼承HttpServlet。

HTTP

  1. 概念:Hyper Text Transfer Protocol’

    傳輸協議:定義了客戶端和服務器端通信時發送數據的格式

  2. 特點

    1. 基於TCP/IP協議
    2. HTTP的默認端口是80
    3. 基於請求/響應模型,即一次請求對應一次響應
    4. 無狀態的:每次請求之間相互獨立,不能夠交互數據
  3. 舉例

    瀏覽器訪問www.baidu.com,到底向百度的服務器發送了幾次請求?

    答:發送了多次請求,收到了多次響應。每張圖片,css文件,js文件都是一次單獨的請求。 可以按F12找到Network,裏面的每一項都是一次單獨的請求和響應。

  4. 歷史版本

    • 1.0 每一次請求響應都會建立新的連接。(建立連接 -> 發送數據 -> 斷開 ->建立連接 -> 發送數據 -> 斷開)
    • 1.1 (複用建立的連接) (建立連接 -> 發送數據 ->等待一會兒若還有數據發送,複用剛纔連接 - >等待一會兒沒有數據發送 -> 斷開)

請求消息數據格式

  1. 請求行

    請求方式 請求url 請求協議/版本

    Get url HTTP/1.1

    • HTTP協議中有7鍾請求方式,常用的由2
      • GET:
        1. 請求參數在請求行中,在url後
        2. 請求的url長度有限制的
        3. 不太安全
      • POST
        1. 請求的參數在請求中
        2. 請求的url長度沒有限制
        3. 相對安全
  2. 請求頭

    請求頭名稱: 請求頭值(多個值用 , 分隔開)

    常見的請求頭:

    • User-Agent:瀏覽器告訴服務器,我訪問你使用的瀏覽器版本

      可以在服務器端獲取改頭的信息,解決瀏覽器的兼容問題

    • Aceept:告訴服務器,瀏覽器可以接受你給我響應的什麼樣的數據格式

    • Referer:https://www.baidu.com/

      ​ 告訴服務器,當前請求從哪裏來

      作用

         			1. 防盜鏈
         			2. 統計工作:方便統計比如一些流量的來源。
      
  3. 請求空行

    空行,用於分割POST請求頭和請求體

  4. 請求體(正文) GET方式無請求體

    封裝POST請求消息的請求參數的

以上信息可在瀏覽器的調試界面的Network看到

http

響應消息數據格式

與請求消息數據格式很類似。

  1. 響應行

    組成:協議/版本 響應狀態碼 狀態碼描述

    響應狀態碼是指服務器告訴客戶端本次請求和響應的一個狀態

    響應狀態碼 Value
    1xx 服務器接收客戶端消息,但爲接收完成,等待一段時間,發送1xx狀態碼
    2xx 成功. 代表狀態碼:200
    3xx 重定向。 代表狀態碼 :302(重定向) 304(訪問緩存)
    4xx 客戶端錯誤 代表:404(請求路徑無對應資源) 405(請求方式無對應的doXXX方法)
    5xx 服務器錯誤 代表:500(服務器內部出現異常)
  2. 響應頭

    組成:頭名稱:值

    常見響應頭:

    1. Content-Type: 服務器告訴客戶端本次響應體數據格式及編碼格式

      Content-Type: text/html; charset=UTF-8

    2. Content-Length: 666 表示字節的個數

    3. Content-disposition:服務器告訴客戶端以什麼樣的格式打開響應體數據

      默認值是:in-line 在當前頁面內打開

      attachment:以附件形式打開響應體 (文件下載)

  3. 響應空行

  4. 響應體

    真實的傳輸的數據

總結

記JAVA web 第一次學習。同時爲了跟上潮流,已經從eclipse轉爲IDEA。

有什麼問題歡迎大家在下方評論或者私信或者聯繫郵箱[email protected]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章