1. 程式人生 > 其它 >EL&JSTL筆記

EL&JSTL筆記

  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表示式一起使用
        1. 注意:
          • 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. 部署運維