13_EL&JSTL

# 今日內容
    1. JSP:
        1. 指令
        2. 註釋
        3. 內置對象

    2. MVC開發模式
    3. EL表達式
    4. JSTL標籤
    5. 三層架構


## JSP:
    1. 指令:
        * 做用:用於配置JSP頁面,導入資源文件
        * 格式:
            <%@ 指令名稱 屬性名1=屬性值1  屬性名2=屬性值2 ...%>
        *分類:
            1. page            :配置JSP頁面的
                * contendType:等同於response.setContextType()
                    1. 設置響應體的mime類型以及字符集
                    2. 設置當前jsp頁面的編碼(只能是高級的IDE才生效,若是使用低級工具,則須要設置pageEncoding屬性設置當前頁面的字符集)
                * import:導包
                * errorPage:當前頁面發生異常後,會自動跳轉到指定的錯誤頁面
                * isErrorPage:表示當前頁是不是錯誤頁面。
                    * true:是,可使用內置對象exception
                    * false:否,默認值,不可使用內置對象exception


            2. include        :頁面包含的,導入頁面的資源文件
                * <%@include file="top.jsp"%>
            3. taglib         :導入資源
                * <%@ tagle prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
                    * prefix:前綴,自定義的

    2. 註釋:
        1. html註釋:
            <!-- -->:只能使用html代碼片斷
        2. jsp註釋:推薦使用
            <%-- --%>:能夠註釋全部


    3. 內置對象
        * 在jsp頁面中不須要建立,直接使用的對象
        * 一共有9個:
                變量名                        真實類型                                    做用
            * pageContext                    PageContext                                當前頁面共享數據,還能夠獲取其餘8個內置對象
            * request                        HttpServletRequest                        一次請求訪問的多個資源(轉發)
            * session                        HttpSession                                一次會話的屢次請求間
            * application                    ServletContext                            全部用戶間共享數據
            * response                        HttpServletResponse                        響應對象
            * page                            Object                                    當前頁面(Servlet)的對象 this
            * out                            JsWriter                                輸出對象,數據輸出到頁面上
            * config                        ServletConfig                            Servlet的配置對象
            * exception                        Throwable                                異常對象




## MVC:開發模式
    1. jsp演變歷史
        1. 早起只有servlet,只能使用response輸出標籤數據,很是麻煩
        2. 後來又有jsp,簡化了Servlet的開發,若是過分使用jsp,在jsp中寫大量的java代碼,又寫HTML表,形成難於維護,難於分工協做。
        3. 再後來,java的web開發,借鑑mvc開發模式,使得程序的設計更加合理性

    2. MVC:
        1. M:Model,模型。 JavaBean
            * 完成具體的業務操做,如:查詢數據庫,封裝對象
        2. V:View,視圖。JSP
            * 展現數據
        3. C:Controller,控制器。Servlet
            * 獲取用戶的輸
            * 調用模型
            * 將數據交給視圖進行展現

        * 優缺點:
            1. 優勢:
                1. 耦合性低,方便維護,能夠利於分工協做
                2. 重用性高

            2. 缺點:
                1. 使的項目架構變得複雜,對於開發人員要求高



## EL表達式
    1. 概念:Exception Language 表達式語言
    2. 做用:替換和簡化jsp頁面中java代碼的編寫
    3. 語法:${表達式}
    4. 注意:
        * jsp默認支持el表達式的,若是要忽略el表達式
            1. 設置jsp中page指令中:isELIgnored = "true" 忽略當前jsp頁面中全部的el表達式
            2. \${表達式}:忽略當前這個el表達式

    5. 使用:
        1. 運算:
            * 運算符:
                1. 算術運算符: + - * /(div) %(mod)
                2. 比較運算符: > < >= <= == !=
                3. 邏輯運算符: &&(and) ||(or) !(not)
                4. 空運算符:empty
                    * 功能:用於判斷字符串、集合、數組對象是否爲null而且長度是否爲0
                    * ${empty list}
                    * ${not empty str}:表示判斷字符串、集合、數組對象是否不爲null,而且長度是否 > 0
                
        2. 獲取值
            1. el表達式只能從域對象中獲取值
            2. 語法:
                1. ${域名城.鍵名}:從指定域中獲取指定鍵的值
                    * 域名城:
                        1. pageScope               -->pageContext
                        2. requestScope            -->request
                        3. sessionScope            -->session
                        4. applicationScope        -->application(ServletContext)
                    * 舉例:在request域中存儲了name=張三
                    * 獲取:${requestScope.name}

                2. ${鍵名}:表示依次從最小的域中查找是否有該鍵對應的值,知道找到爲止。

                3. 獲取對象、List集合、Map集合的值
                    1. 對象:${域名城.鍵名.屬性名}
                        * 本質上回去調用對象的getter方法

                    2. List集合:${域名城.鍵名[索引]}

                    3. Map集合:
                        * ${域名城.鍵名.key名稱}
                        * ${域名城.鍵名["key名稱"]}



            3. 隱式對象:
                * el表達式中有11個隱式對象
                * pageContext:
                    * 獲取jsp其餘八個內置對象
                        * ${pageContext.request.contextPath}:動態獲取虛擬目錄.]



## JSTL
    1. 概念:JavaServer Page Tag Library  JSP標準標籤庫
        * 是由Apache組織提供的開源的免費的jsp標籤    <標籤>

    2. 做用:用於簡化和替換jsp頁面上的java代碼

    3. 使用標籤:
        1. 導入jstl相關的jar包
        2. 引入標籤庫:taglib指令:  <%@ taglib %>
        3. 使用標籤

     4. 經常使用的JSTL標籤
         1. if:至關於java代碼的if語句
             1. 屬性:
                 * test 必須屬性,接收boolean表達式
                     * 若是表達式爲true,則顯示if標籤體內容,若是爲false,則不顯示標籤體內容

                    * 通常狀況下,test屬性會結合el表達式一塊兒使用

            2. 注意:
                * c:if標籤體沒有else狀況,想要else狀況,則能夠定義一個c:if標籤


        2. choose:至關於java代碼的switch語句
            1. 使用choose標籤聲明                    至關於switch聲明
            2. 使用when標籤作判斷                    至關於case
            3. 使用otherwise標籤作其餘狀況的聲明    至關於default

        3. foreach:至關於java代碼的for語句
            1. 完成重複操做
                 for(int i = 0; i < 10; i++){

                }
                *屬性:
                    begin:開始值
                    end:結束值
                    var:臨時變量
                    step:步長
                    var:Status:循環狀態變量
                        index:容器中元素的索引,從0開始
                        count:循環次數,從1開始

            2. 遍歷容器
                List<User> list;
                for(User user : list){
            
                }
                屬性:
                    items:容器對象
                    var:容器中元素臨時變量
                    varStatus:循環狀態變量
                        index:容器中元素索引,從0開始
                        count:循環次數,從1開始html

本站公眾號
   歡迎關注本站公眾號,獲取更多信息