天天看點

JavaWeb--HTTP與Maven

前言

  • Java Web 其實就是一個技術的總和,把Web看成一個容器而已主要使用JavaEE技術來實作.在加上各種中間件。
  • 整個javaWeb階段的内容通過實際的案例貫穿學習, 所涉及到的技術知識點會在案例中根據不同的需求引入。
  • 首先了解javaWEB的整個技術體系,掌握常用的技術知識點。
    JavaWeb--HTTP與Maven

我會将JavaWeb分為8篇左右的文章來記錄自己的學習過程,也友善大家逐級遞增難度的學習,如有錯誤或遺漏歡迎大家指出。

JavaWeb--HTTP與Maven

注:本篇文章承接上一篇JavaWeb文章JavaWeb--基本概念、Web伺服器與Tomcat

下面我們進入正題!

4、HTTP

4.1、什麼是HTTP

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

http端口:80 https端口:443 (s代表安全)

  • 文本:html,字元串,...
  • 超文本:圖檔,音樂,視訊,定位,地圖....

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代表OK
    Remote Address: 110.242.68.3:443                         //位址
    Referrer Policy: strict-origin-when-cross-origin         //協定
               
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
    Accept-Encoding: gzip, deflate, br
    Accept-Language: zh-CN,zh;q=0.9//語言
    Cache-Control: max-age=0
    Connection: keep-alive
               
  • 請求行
    JavaWeb--HTTP與Maven
  • 消息頭
    Accept:             //告訴浏覽器它所支援的資料類型
    Accept-Encoding:    //支援哪種編碼格式   GBK   UTF-8    GB2312   ISO8859-1
    Accept-Language:    //告訴浏覽器他的語言環境
    Cache-Control:      //緩存控制
    Connection:         //告訴浏覽器,請求完是斷開還是保持連接配接
    HOET:               //主機
               

4.4、HTTP響應

  • 伺服器-----響應(response)-----用戶端
Cache-Control: private                           // 緩存控制
Connection: keep-alive                           // 連接配接
Content-Encoding: gzip                           // 編碼
Content-Type: text/html;charset=utf-8            // 類型
           
  • 響應體
Accept:             //告訴浏覽器它所支援的資料類型
Accept-Encoding:    //支援哪種編碼格式   GBK   UTF-8    GB2312   ISO8859-1
Accept-Language:    //告訴浏覽器他的語言環境
Cache-Control:      //緩存控制
Connection:         //告訴浏覽器,請求完是斷開還是保持連接配接
HOET:               //主機
REFRESH:            //告訴用戶端多久重新整理一次
Location:           //讓網頁重新定位
           
  • 響應頭

    200:請求響應成功

    202:接受

    3**:

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

    400:錯誤的請求

    404:找不到資源

    5**:伺服器代碼錯誤(502網關錯誤)

5、Maven

  1. 在JAvaweb開發中,需要使用大量的jar包,我們需要手動導入
  2. 如何能夠讓一個東西自動幫我們導入和配置這個jar包

5.1、Maven項目架構管理工具

我們目前用來就是友善導入jar包的

Maven的核心思想:約定大于配置

  • 有限制不要去違反

Maven會規定好你該如何去編寫我們的Java代碼,必須要按照規範

5.2、下載下傳安裝Maven

具體下載下傳步驟大家可以參考這篇部落格maven安裝及配置(詳細版)

這裡尤其要注意Maven版本與IDEA版本對應的問題

官網;https://maven.apache.org/

這裡我儲存的位置是:E:\JavaBackend\Maven\apache-maven-3.5.2

JavaWeb--HTTP與Maven

5.3、配置環境變量

在我們的系統環境變量中

配置如下配置:

  • M2_HOME maven目錄下的bin目錄
  • MAVEN_HOME maven的目錄
  • 在系統的path中配置%MAVEN_HOME%\bin
測試是否安裝成功
JavaWeb--HTTP與Maven

5.4、阿裡雲鏡像

  • 鏡像:mirrors,可以加速我們的下載下傳

setting.xml配置檔案位置

<mirror>
    <id>nexus-aliyun</id>
    <mirrorOf>central</mirrorOf>
    <name>Nexus aliyun</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
           

5.5、本地倉庫

本地倉庫 localRepository,遠端倉庫

建立一個倉庫:

  • 原來的位址:
C:\Users\86134\.m2\repository
           
  • 修改後的位址:
<localRepository>E:/JavaBackend/Maven/apache-maven-3.5.2/maven_repository</localRepository>
           

5.6、在IDEA中使用Maven

  1. 啟動IDEA
  2. 建立一個Mavenweb項目
JavaWeb--HTTP與Maven
JavaWeb--HTTP與Maven

3.等待項目初始化完畢

4.觀察maven倉庫中多了哪些東西

5.idea中的maven設定(idea中經常使用自帶的maven,需要手動修改,退出項目在最開始的頁面可以修改預設設定)

JavaWeb--HTTP與Maven
JavaWeb--HTTP與Maven

5.7、建立一個普通maven項目

JavaWeb--HTTP與Maven

5.8、标記檔案夾功能

(1)

JavaWeb--HTTP與Maven

(2)

JavaWeb--HTTP與Maven

5.9、在idea中配置Tomcat

(1)

JavaWeb--HTTP與Maven

(2)

JavaWeb--HTTP與Maven
JavaWeb--HTTP與Maven

(3)警告問題:我們通路一個網站的時候,需要指定一個檔案夾名字

JavaWeb--HTTP與Maven
JavaWeb--HTTP與Maven

(4)啟動測試

JavaWeb--HTTP與Maven
JavaWeb--HTTP與Maven

5.10、pom檔案

pom.xml是maven的核心配置檔案

JavaWeb--HTTP與Maven
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<!--maven的版本和頭檔案-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
<!--這裡就是我們剛才配置的GAV-->
  <groupId>org.example</groupId>
  <artifactId>Javaweb-01-maven</artifactId>
  <version>1.0-SNAPSHOT</version>
<!--packaging打包方式
java:jar
Javaweb:war
-->
  <packaging>war</packaging>

  <name>Javaweb-01-maven Maven Webapp</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>
<!--配置-->
  <properties>
<!--項目的預設建構編碼-->
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!--編碼版本-->
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
  </properties>
  
<!--項目依賴-->
  <dependencies>
      <!--maven會幫你導入這個jar包所依賴的其他jar包    -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
<!--項目建構用的東西-->
  <build>
    <finalName>Javaweb-01-maven</finalName>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.22.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-war-plugin</artifactId>
          <version>3.2.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

           

在build中配置resources,來防止我們資源導出失敗的問題

<!--    在build中配置resources , 來防止我們資源導出失敗的問題-->
    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
            </resource>
        </resources>
    </build>
           

5.11、Maven倉庫的使用

Maven倉庫

常見的問題

  • maven版本與jdk版本不相容(jdk1.8 maven3.5)
  • Tomcat閃退
  • IDEA中每次都要重複配置Maven(修改全局)
  • Maven項目中Tomcat無法配置
  • Maven預設web項目中的web.xml版本問題
    JavaWeb--HTTP與Maven
      • 替換為webapp4.0版本和Tomcat一緻
      <?xml version="1.0" encoding="UTF-8"?>
      
      <web-app metadata-complete="true" version="4.0" 
               xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" 
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xmlns="http://xmlns.jcp.org/xml/ns/javaee">
               
      </web-app>
                 

到這裡關于Http和Maven知識就結束啦≧ω≦,希望大家都有所收獲!

JavaWeb--HTTP與Maven

繼續閱讀