JSP

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

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

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


            2. include    : 頁面包含的。導入頁面的資源文件
                * <%@include file="top.jsp"%>
            3. taglib    : 導入資源
                * <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
                    * prefix:前綴,自定義的
    2. 註釋:
        1. html註釋:
            <!-- -->:只能註釋html代碼片段
        2. jsp註釋:推薦使用
            <%-- --%>:可以註釋所有


    3. 內置對象
        * 在jsp頁面中不需要創建,直接使用的對象
        * 一共有9個:
                變量名                    真實類型                        作用
            * pageContext                PageContext                    當前頁面共享數據,還可以獲取其他八個內置對象
            * request                    HttpServletRequest            一次請求訪問的多個資源(轉發)
            * session                    HttpSession                    一次會話的多個請求間
            * application                ServletContext                所有用戶間共享數據
            * response                    HttpServletResponse            響應對象
            * page                        Object                        當前頁面(Servlet)的對象  this
            * out                        JspWriter                    輸出對象,數據輸出到頁面上
            * 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. 概念:Expression 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}:判斷字符串、集合、數組對象是否爲null或者長度爲0
                    * ${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 Pages 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語句

    5. 練習:
        * 需求:在request域中有一個存有User對象的List集合。需要使用jstl+el將list集合數據展示到jsp頁面的表格table中

## 三層架構:軟件設計架構
    1. 界面層(表示層):用戶看的得界面。用戶可以通過界面上的組件和服務器進行交互
    2. 業務邏輯層:處理業務邏輯的。
    3. 數據訪問層:操作數據存儲文件。


## 案例:用戶信息列表展示
    1. 需求:用戶信息的增刪改查操作
    2. 設計:
        1. 技術選型:Servlet+JSP+MySQL+JDBCTempleat+Duird+BeanUtilS+tomcat
        2. 數據庫設計:
            create database day17; -- 創建數據庫
            use day17;                -- 使用數據庫
            create table user(   -- 創建表
                id int primary key auto_increment,
                name varchar(20) not null,
                gender varchar(5),
                age int,
                address varchar(32),
                qq    varchar(20),
                email varchar(50)
            );

    3. 開發:
        1. 環境搭建
            1. 創建數據庫環境
            2. 創建項目,導入需要的jar包

        2. 編碼
    

    4. 測試
    5. 部署運維


 

發佈了59 篇原創文章 · 獲贊 2 · 訪問量 9091
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章