JSTL標籤庫,自定義標籤

JSTL

  1. jstl的概述

    • apache的東西,依賴EL
    • 使用jstl需要導入jstl1.2.jar
    • 四大標籤庫:

    core:核心庫,重點
    fmt:格式化:日期、數字
    sql:過時
    xml:過時

  2. 導入標籤庫

    • jar包
    • 在jsp頁面中:<%@taglib prefix=”前綴” uri=”路徑”%>

core –> c標籤!

out和set
remove
url
if
choose
foreach
  1. out和set

    • :輸出

    value:可以是字符串常量,也可以是EL表達式
    default:當要輸出的內容爲null時,會輸出default指定的值
    escapeXml:默認值爲true,表示轉義!
    例://escapeXml是默認,可不寫出

  2. :設置(創建域的屬性)
    var:變量名
    value:變量值,可以是EL表達式
    scope:域,默認爲page,可選值:page、request、session、application
    例:
  3. remove

    • :刪除域變量

    var:變量名
    scope:如果不給出scope,表示刪除所有域中的該名稱的變量;如果指定了域,那麼只刪除該域的變量。

  4. url

    • value:指定一個路徑!它會在路徑前面自動添加項目名。
      <> ,它會輸出/day13_1/index.jsp
    • 子標籤:,用來給url後面添加參數,例如:



      結果爲:/day13_1/index.jsp?username=%ED%2C%3F%ED%2C%3F
    • var:指定變量名,一旦添加了這個屬性,那麼url標籤就不會再輸出到頁面,而是把生成url保存到域中。
    • scope:它與var一起使用,用來保存url。
  5. if:對應java中的if語句

    • 標籤體內容,當test值爲true時,執行標籤體內容!
  6. choose:它對應java中的if/else if/ … /else

    • 例如:







      等同與
      if(…) {
      } else if( ….) {
      } else if( ….) {
      } else if( ….) {
      } …
      else { …}
  7. forEach
    它用來循環遍歷數組、集合!
    它還可以用計數方式來循環!

    計數方式:

    for(int i = 1; i <= 10; i++) {

    }

    //step可省略
    ${i}

    屬性:

    • var:循環變量
    • begin:設置循環變量從幾開始。
    • end:設置循環變量到幾結束。
    • step:設置步長!等同與java中的i++,或i+=2。step默認爲1

用來輸出數組、集合!


${str }

等同於

for(String str : strs) {

}

屬性:
* items:指定要循環誰,它可以是一個數組或一個集合
* var:把數組或集合中的每個元素賦值給var指定的變量。
注意:items=”${list }”// “}”後絕不能有空格


循環狀態

可以使用varStatus來創建循環狀態變量!

循環狀態變量有如下屬性:
* count:循環元素的個數
* index:當前循環元素的下標
* first:是否爲第一個元素
* last:是否爲最後一個元素
* current:當前元素


vs.index {vs.count } vs.first {vs.last } ${vs.current }

====================================

fmt庫

它是格式化庫

value:指定一個Date類型的變量
pattern:用來指定輸出的模板!例如:yyyy-MM-dd HH:mm:ss



保留小數點後2位,它會四捨五入!如果不足2位,以0補位!


保留小數點後2位,它會四捨五入!如果不足2位,不補位!

自定義標籤

  1. 步驟

    • 標籤處理類(標籤也是一個對象,那麼就需要先有類!)
    • tld文件,它是一個xml
    • 頁面中使用<%@taglib%>來指定tld文件的位置
  2. 標籤處理類
    SimpleTag接口:

    • void doTag():每次執行標籤時都會調用這個方法;
    • JspTag getParent():返回父標籤( 非生命週期方法 )//有時自己調用
    • void setParent(JspTag):設置父標籤
    • void setJspBody(JspFragment):設置標籤體
    • void setJspContext(JspContext):設置jsp上下文對象,它兒子是PageContext

        其中doTag()會在其他三個方法setXxx()方法之後被tomcat調用。

  3. 配置tld文件

tld文件一般都放到WEB-INF之下,這樣保證客戶端訪問不到!

myTag1 指定當前標籤的名稱
cn.itcast.tag.MyTag1 指定當前標籤的標籤處理類!
empty 指定標籤體的類型,我們這裏使用的是空標籤!

  1. 頁面中指定tld文件位置

<%@ taglib prefix=”it” uri=”/WEB-INF/tlds/itcast-tag.tld” %>
導標籤庫,就是爲頁面指定tld文件的位置!

自定義標籤方式二:
SimpleTagSupport類實現了SimpleTag接口,它已經把所有的tomcat傳遞的數據都保存起來了,而且還提供了get方法,供子類調用。我們只需要重寫doTag()方法即可


進階

標籤體內容
* empty:無標籤體!
* JSP:jsp2.0已經不在支持這個類型了!表示標籤體內容可以是:java腳本,可以是標籤,可以是el表達式
* scriptless:只能是EL表達式,也可以是其他的標籤或字符串
* tagdependent:標籤體內容不會被執行,而是直接賦值標籤處理類!

不在執行標籤下面內容的標籤!

在標籤處理類中的doTag()中使用SkipPageException來結束!
  Tomcat會調用標籤處理類的doTag()方法,然後Tomcat會得到SkipPageException,它會跳過本頁面其他內容!


標籤屬性

步驟:
1. 給你的標籤處理類添加屬性!
  爲標籤處理類添加屬性,屬性至少要且一個set方法!這個set方法會在doTag()方法之前被tomcat執行!所在doTag()中就可以使用屬性了。

  1. 在tld文件中對屬性進行配置


    test 指定屬性名
    true 指定屬性是否爲必需的
    true 指定屬性是否可以使用EL

MVC

它不是java獨有,所有的B/S結構的項目都在使用它!

M – model 模型(自己寫代碼)
V – View 視圖(jsp)
C – Cotroller 控制器(Servlet)

JavaWeb三層框架

Web層 –> 與Web相關的內容(Servlet,JSP,Servlet相關API:request、response、session、ServletContext)
業務層 –> 業務對象(Service),此層屬於JavaBean的一部分
數據層 –> 操作數據庫(DAO Data Access Object)(所有對數據庫的操作,不能跳出到DAO之外),此層數據JavaBean的另一部分

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章