1. 程式人生 > 其它 >關於前端的一些知識

關於前端的一些知識

關於前端

總綱: HTML相當於人的骨骼, CSS相當於給人化妝, JS相當於讓人的區域性動起來.




01.HTML 入門

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>HTML入門</title>
   <!--
    總綱: HTML相當於人的骨骼, CSS相當於給人化妝, JS相當於讓人的區域性動起來.
    
    重點:CSS裡面有個選擇器、JS裡面有個DOM物件
    	  
    HTML簡介:
        概述:
            全稱叫Hyper Text Markup Language(超文字標記語言).
            超文字:  比普通文字更強大, 裡邊可以放音訊, 視訊, 圖片等.
            標記語言:由標籤組成的語言.
        特點:
            1. HTML語言是不區分大小寫的, 為了閱讀方便, 建議全部小寫.
            2. HTML檔案的字尾名是.html 和 .htm, 前者是新的命名, 後者是舊的命名.
            3. HTML語言是由標籤組成的, 標籤又分為: 閉合標籤 和 自閉合標籤.
                <font size="7">我是字型標籤</font>    閉合標籤.
                <br />                              自閉合標籤.
            4. 閉合標籤由:  開始(開放)標籤 和 結束(閉合)標籤組成.
            5. 標籤可以有屬性, 屬性值要用引號括起來, 單雙引號均可.
            6. HTML的註釋寫法為:
            
            7. HTMl的標準格式為:
                <html>
                    <head>
                        <title></title>
                        <meta />
                    </head>

                    <body>
                    </body>
                </html>
            8. 如果涉及到標籤嵌套了, 建議: 包裹巢狀, 不建議: 交叉巢狀.
            
        常用標籤:
            基本標籤:
                <ul>    無序列表,  裡邊的每一項叫列表項, 用<li>表示.
                <ol>    有序列表,  裡邊的每一項叫列表項, 用<li>表示.
                <img>   圖片標籤, 常用屬性: border, width, height, align, alt
                <a>     超連結, 常用屬性: href, target
                <div>   塊標籤, 一般要結合CSS程式碼一起使用.

                <h數字>
                <br />
                <hr />
                <font>
                <b> 加粗
                <i> 斜體
                <u> 下劃線
                <strong>
                <table>
            表單標籤:
                概述:
                    表單標籤叫<form>, 寫在裡邊的每一項叫: 表單項.
                表單項分類:
                    1. 輸入項.
                        格式:
                            <input type="輸入項的型別" />
                        型別劃分:
                            text
                            password
                            radio
                            checkbox
                            file
                            submit
                            reset
                            image
                            button
                            hidden
                    2. 文字輸入域.
                        <textarea>
                    3. 下拉列表.
                        <select>

                表單標籤<form>的屬性:
                    action: 表示頁面資料提交到哪裡(預設是當前頁面)
                    method: 表示頁面資料的提交方式.
                        get(預設):  提交的資料在URL位址列中明文顯示, 相對不安全, 效率稍微高一點, 提交資料有大小限制.
                        post: 提交的資料不會在URL位址列中明文顯示, 而是藏在請求體中, 相對安全, 效率稍微低一點, 提交資料理論上無大小限制.
            使用表單標籤時的細節:
                1. 表單項標籤必須寫到表單標籤中, 才可以被提交.
                2. 表單項標籤必須有name屬性, 後臺才可以接收.
    -->
</head>
<body>
</body>
</html>



02.HTML的常用標籤演示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>02.HTML的常用標籤演示</title>
</head>
 <body>
    <!--這裡寫的是頁面的"大白"部分, 即: 我們學的所有的標籤都是寫到這裡的-->
    <!--演示無序列表  type屬性: circle(空心圓點), square(實心正方形), desc(實心圓點, 預設)    <hr /> : 分割線 -->
        <ul type="desc">
        <li>飛機</li>
        <li>高鐵</li>
        <li>輪船</li>
    </ul>
    <hr />  
     
<!--演示有序列表  type屬性: 數字(預設), 大小寫字母, 大小寫羅馬數字-->
<ol type="I">
    <li>鯡魚罐頭</li>
    <li>臭鱖魚</li>
    <li>螺螄粉</li>
    <li>臭豆腐</li>
    <li>臭豆腐</li>
</ol>
<hr />

<!--演示圖片路徑-->
<center>
<!--        <img src="../image/01.jpg" width="200px" height="300px" border="1px" alt="圖片正在拼命載入中..."/> -->
        <img src="../image/01.jpg" border="1px" alt="圖片正在拼命載入中..."/>
    </center>
    <hr />
     
     
<!--超連結標籤-->
    <a href="http://www.baidu.com" target="_blank">我用雙手, 成就你一生的夢想!</a>
    <hr />
     
<div>我是塊標籤, 我獨佔一行, 我一般要結合CSS一起使用</div>
<div>我是塊標籤, 我獨佔一行, 我一般要結合CSS一起使用</div>
<div>我是塊標籤, 我獨佔一行, 我一般要結合CSS一起使用</div>
<hr />

<font>我是字型</font>
<font>我是字型</font>
<font>我是字型</font>

</body>
</html>



03.HTML的表單標籤

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>03.HTML的表單標籤</title>
</head>
<!--<body background="../image/01.jpg">-->
<body>
    <!--表單標籤小案例: 模擬註冊頁面-->
    <!--提交資料到內部頁面-->
    <form action="02.HTML的常用標籤演示.html" method="get">
    <!--提交資料到外部頁面, 記得要寫 http://-->
<!--    <form action="http://www.baidu.com">-->
        賬號:
            <input type="text" name="username" placeholder="請錄入您的賬號"/> <br />
        密碼:
            <input type="password" name="password" placeholder="請錄入您的密碼"/> <br />
        性別:
            <input type="radio"name="gender" value="male" checked>男
            <input type="radio"name="gender" value="male">女 <br />
        愛好:
            <input type="checkbox"name="hobby" value="basketball" checked>籃球
            <input type="checkbox"name="hobby" value="football" >足球
            <input type="checkbox"name="hobby" value="deskball" checked>桌球
            <input type="checkbox"name="hobby" value="pingpangball" >乒乓球  <br/>
        上傳頭像:
            <input type="file" name="myPicture" />  <br />
        個人說明:
            <textarea rows="5" cols="50">

            </textarea>   <br />
        籍貫:
            <select>
                <option>--請選擇--</option>
                <option>廣東省</option>
                <option>廣西省</option>
                <option>河南省</option>
                <option>河北省</option>
            </select>
        <br/>
        <!--提交頁面資料-->
        <input type="submit" value="點我提交">
        <input type="image" src="../image/02.jpg" width="100px" height="50px">
        <input type="reset" value="點我重置">
        <input type="button" value="我是普通按鈕, 沒有任何自帶功能, 需要結合JS程式碼一起使用">
        <input type="hidden" value="我是隱藏域, 裡邊的資料一般是給後臺開發人員用的">

    </form>
</body>
</html>



04.CSS入門

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>CSS入門</title>
    <!--
        CSS簡介:
            概述:
                全稱叫Cascading Style Sheets(層疊樣式表), 就是用來美化頁面的.
            分類:
                行內樣式:
                    格式:
                        style="屬性名: 屬性值; 屬性名: 屬性值;"
                    特點:
                        只針對於當前元素有效.
                內部樣式:
                    格式: 需要結合選擇器使用
                        選擇器名{
                            屬性名: 屬性值;
                            屬性名: 屬性值;
                        }
                     特點:
                        只針對於當前頁面內的元素有效.
                外部樣式:
                     格式: 需要結合選擇器使用
                        選擇器名{
                            屬性名=屬性值;
                            屬性名=屬性值;
                        }
                     特點:
                        針對於當前專案內的所有的頁面有效, 一般可以用來統一網站的風格.
            CSS的選擇器:    掌握
                目的:
                    根據不同的條件, 選擇不同的元素, 只有找到元素(就是HTML標籤), 才能美化它.
                常用選擇器如下:
                    元素選擇器:
                        格式:
                            元素名{
                                屬性名=屬性值;
                                屬性名=屬性值;
                            }
                         特點:
                            根據元素名匹配元素.
                    id選擇器:
                        格式:
                            #選擇器名{
                                屬性名=屬性值;
                                屬性名=屬性值;
                            }
                         特點:
                            根據元素的id屬性匹配元素, 建議 id具有唯一性.
                    類選擇器:
                        格式:
                            .選擇器名{
                                屬性名=屬性值;
                                屬性名=屬性值;
                            }
                         特點:
                            根據元素的class屬性匹配元素.
                    後代選擇器:
                         格式:
                            選擇器1 選擇器2{
                                屬性名=屬性值;
                                屬性名=屬性值;
                            }
                         特點:
                            先匹配選擇器1, 匹配上之後, 從中選擇符合選擇器2的元素.
                            不管是否是直接子級都要(兒子, 孫子, 重孫子都要)
                    子元素選擇器:
                         格式:
                            選擇器1>選擇器2{
                                屬性名=屬性值;
                                屬性名=屬性值;
                            }
                         特點:
                            先匹配選擇器1, 匹配上之後, 從中選擇符合選擇器2的元素.
                            只要直接的子級元素.
                    屬性選擇器:
                        格式:
                            選擇器[屬性1][屬性2='屬性值']{
                                屬性名=屬性值;
                                屬性名=屬性值;
                            }
                         特點:
                            根據元素的屬性匹配的.
            CSS的常用樣式:
                border: 表示邊框, 格式如下:
                    border: 1px solid red;   1畫素 單實線 紅色
                    solid:單實線 double:雙實線, dotted(虛線 .), dashed(虛線 -)
                width: 寬度
                height: 高度
                font-size: 字型大小
                text-decoration: none 取消超連結的下劃線
    -->
</head>
<body>
    <div style="border: 1px dotted red; ">div111</div>
    <div>div222</div>
    <div style="border: 1px dashed red; ">div333</div>
</body>
</html>

05.css樣式之內部樣式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>內部樣式</title>

    <!--CSS樣式-->
    <style>
        /*元素選擇器, 即: 根據元素的名字(標籤名)獲取元素的*/
        /*div{
            border: 1px solid red;
        }*/

        /*id選擇器, 即: 根據元素的id屬性匹配元素, 建議 id具有唯一性.*/
        /*#d1{
            border: 1px solid red;
            width: 200px;
            height: 100px;
        }*/

        /*類選擇器, 即: 根據元素的class屬性匹配元素*/
       /* .divClass{
            border: 1px solid red;
            width: 200px;
            height: 100px;
        }*/

        /*後代選擇器: 先匹配選擇器1, 匹配上之後, 從中選擇符合選擇器2的元素. 不管是否是直接子級都要 */
        div a{
            font-size: 50px;
            text-decoration: none;
        }

        /*子元素選擇器: 先匹配選擇器1, 匹配上之後, 從中選擇符合選擇器2的元素. 只要直接子級 */
        /*div>a{
            font-size: 50px;
        }*/

        /*屬性選擇器: 根據元素的屬性匹配的*/
        div[id="d2"][class]{
            border: 1px solid red;
            width: 300px;
            height: 100px;
        }
    </style>
</head>
<body>
    <div id="d1">div111</div>
    <div id="d2" class="divClass">div222</div>
    <div id="d3" class="divClass">div333</div>
    <hr/>

    <div>
        <a href="http://www.baidu.com">百度</a>
        <font>
            <a href="http://www.jd.com">京東</a>
        </font>
    </div>
</body>
</html>

06.css樣式之外部樣式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>外部樣式</title>

    <!--引入外部CSS樣式   relation: 關聯 -->
    <link rel="stylesheet" href="../css/my.css" />
</head>
<body>
    <div>div111</div>
    <div>div222</div>
    <div>div333</div>
</body>
</html>

07.JS入門

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>JS入門</title>
    <!--
        JS簡介:
            概述:
                全稱叫JavaScript, 它是一門指令碼語言, 也是一門弱型別語言, 主要是用來給頁面增加動態功能的.
            組成:
                ECMAScript核心基礎:
                    定義了整個JS的核心語法和基本物件.
                BOM物件:
                    Browser Object Model, 瀏覽器物件模型, 即: 一個瀏覽器 = 一個BOM物件.
                    常用物件用: location, history
                DOM物件:      //必須掌握.
                    Document Object Model, 文件物件模型, 即: 一個HTML頁面 = 一個DOM(樹)物件
                    Js是把整個頁面轉成對應的一個DOM樹結構, 然後通過管理該DOM樹, 實現管理頁面的目的.
            JS的寫法:
                內部指令碼:
                    直接寫到頁面的<script>標籤中即可.
                外部指令碼:
                    寫到模組下的js資料夾中, 新建js檔案, 然後在裡邊編寫, 最後在專案中引入該檔案即可.
    -->

    <!--這裡寫的是JS的指令碼檔案: 內部指令碼檔案.-->
   <!-- <script>
        //JS中的函式
        function tan() {
            alert("小孩子家家的不要亂點, 好好學習, 將來更好的為人民服務!")
        }
    </script>-->

    <!--引入外部js指令碼檔案-->
    <script src="../js/my.js"></script>
</head>
<body>
    <input type="button" value="點我有驚喜" onclick="tan()"/>
</body>
</html>

08.DOM樹結構

09.提交資料方式

傳送請求,獲取資料。(String形式的html頁面):
	原生態的JDK方式   get  post
	HttpClient方式   get  post

Get方式:
	提交資料到URL位址列,相對不安全,效率高,提交資料有大小限制。
Post方式:
	提交資料在請求體中,相對安全,效率低,提交資料大小理論上無限制。

問:什麼是請求體呢?
答:它是Http協議的組成部分,Http協議是由  請求 和 響應 兩部分組成。
	請求:請求行、請求頭、請求體(Get方式沒有請求體)
	響應:響應行、響應頭、響應體

10.傳送請求獲取資料之 HttpClient物件的get方式

package com.itheima.demo02_httpclient;

import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

/*
    案例: 演示 傳送請求獲取資料之  HttpClient物件的get方式  (掌握)

    爬蟲的步驟:
        1. 明確首頁URL.
        2. 傳送請求, 獲取資料.
        3. 解析資料.
        4. 儲存資料.

    爬蟲簡介:
        就是模擬瀏覽器向伺服器傳送請求, 並獲取資料.

    細節:
        1. 使用HttpClient之前, 需要先導包.
        2. 一個HttpClient物件 = 一個瀏覽器物件.
 */
public class Demo01 {
    public static void main(String[] args) throws Exception {
        //1. 明確首頁URL.
        String indexUrl = "http://www.itcast.cn";
        //2. 傳送請求, 獲取資料.
        //2.1 獲取HttpClient物件, 即: 獲取一個瀏覽器物件.
        CloseableHttpClient httpClient = HttpClients.createDefault();
        //2.2 建立HttpGet物件, 關聯URL, 模擬: get請求.
        HttpGet httpGet = new HttpGet(indexUrl);
        //2.3 設定請求頭, 即: 模擬何種瀏覽器.
        //谷歌瀏覽器
        httpGet.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.190 Safari/537.36");
        //2.4 通過HttpClient物件傳送HttpGet物件, 獲取 響應物件(包含: 響應行, 響應頭, 響應體)
        CloseableHttpResponse httpResponse = httpClient.execute(httpGet);
        //2.5 從響應行中提出去響應狀態碼, 看其是否是200, 如果是表示響應成功, 我們在獲取響應資料.
        if (httpResponse.getStatusLine().getStatusCode() == 200) {
            //2.6 獲取響應頭資訊, 並列印.   這一步操作沒有啥用, 就是給你看看, 我們能獲取響應頭資訊.
            /*Header[] headers = httpResponse.getAllHeaders();
            for (Header header : headers) {
                System.out.println(header);
            }*/
            //2.7 獲取響應體資料, 並列印.
            HttpEntity entity = httpResponse.getEntity();
            //2.7.1 如果是圖片, 音訊等資料, 要通過IO流的方式獲取.
            //InputStream is = entity.getContent();

            //2.7.2 如果是純文字呢, 可以通過 EntityUtils#toString()方法快速獲取.
            String html = EntityUtils.toString(entity,"UTF-8");         //獲取的就是字串形式的html
            System.out.println(html);
            System.out.println("---------------------------");


            //3. 解析資料.
            Document dom = Jsoup.parse(html);
            Elements liEles = dom.select(".ulon>li");   //所有的<li>標籤
            for (Element liEle : liEles) {
                //liEle就是每一個標籤
                System.out.println(liEle.text());
            }
        }

        //2.8 釋放資源.
        httpClient.close();     //關閉瀏覽器.



        //4. 儲存資料.
    }
}

11.HttpClient方式傳送請求, 獲取資料之 post方式.

package com.itheima.demo01_httpclient;

import org.apache.http.HttpEntity;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;

import java.util.ArrayList;

/*
    案例: HttpClient方式傳送請求, 獲取資料之 post方式.

    爬蟲的基本步驟:
        1. 明確首頁URL.
        2. 傳送請求, 獲取資料.
            方式1: 原生態JDK方式, get, post
            方式2: HttpClient(瀏覽器物件)方式, get, post    掌握
        3. 解析資料.
        4. 釋放資源.

    HttpClient簡介:
        概述:
            它是專門用來處理Http請求的物件, 可以把它當做一個 瀏覽器物件.
            用之前需要先導包.
 */
public class Demo02 {
    public static void main(String[] args) throws Exception {
        //1. 明確首頁URL.
        String indexUrl = "http://www.itcast.cn";
        //2. 傳送請求, 獲取資料.
        //2.1 建立HttpClient物件, 模擬瀏覽器.
        CloseableHttpClient httpClient = HttpClients.createDefault();
        //2.2 建立HttpPost物件, 即: 請求物件, 封裝所有的請求引數.
        HttpPost httpPost = new HttpPost(indexUrl);
        //2.3 設定請求頭, 即:  模擬何種瀏覽器.
        httpPost.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.190 Safari/537.36");

        //2.4. 設定請求體.
        //2.4.1 建立集合物件, 用來記錄: 請求體中的請求引數.
        ArrayList<BasicNameValuePair> list = new ArrayList<>();
        //2.4.2 新增請求引數物件到集合中.
        list.add(new BasicNameValuePair("username", "admin01"));
        list.add(new BasicNameValuePair("password", "pw111"));
        //2.4.3 將封裝有請求引數的集合 作為構造方法的引數, 獲取: 具體的請求體物件.
        UrlEncodedFormEntity requestEntity = new UrlEncodedFormEntity(list);
        //2.4.4 設定請求體物件到 請求物件中.
        httpPost.setEntity(requestEntity);


        //2.5 傳送請求, 獲取資料, 獲取的是響應物件(即: 包含所有的響應資訊, 例如: 響應行, 響應頭, 響應體
        CloseableHttpResponse response = httpClient.execute(httpPost);
        //2.6 從響應行中獲取響應狀態碼, 並判斷是否是200(表示響應成功)
        if (response.getStatusLine().getStatusCode() == 200) {
            //2.7 如果響應成功, 則從響應物件中獲取 具體的響應體物件.
            HttpEntity entity = response.getEntity();
            //2.8 從響應體物件中獲取具體的響應資訊, 並操作.
            String html = EntityUtils.toString(entity, "utf-8");
            System.out.println(html);
        }
        //2.9 釋放資源.
        httpClient.close();


        //3. 解析資料.
        //4. 釋放資源.
    }
}