jstl標簽中的運算符及自定義標簽的使用說明


最近做一些jsp頁面的數據顯示,知道jstl標簽中有好多運算符,但是根據經驗寫的話,難免出錯,然后再去找具體的符號感覺挺麻煩,就順帶找了點資料整理了下,方便以后學習

運算符

算術運算:+-*/div%mod

關系運算:==eq!=ne<lt>gt<=le>=ge

邏輯運算:&&and||or!not

特殊運算:empty(是否為null或空字符串)、?:(三元運算符);

這張圖基本上包含了所有的運算符,但好像還少了一個 ${ not empty null } 

下面是一些el相關的東西,也可以根據自己的需要寫一些自定義的標簽庫

JSTL標簽EL表達式學習

導入標簽庫

 

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>

 

JSTL Core 標簽庫

Core 標簽庫,又被稱為核心標簽庫,該標簽庫的工作是對於 JSP 頁面一般處理的封裝。在該標簽庫中的標簽一共有 14 個,被分為了四類,分別 :

多用途核心標簽:<c:out> <c:set> <c:remove> <c:catch>

條件控制標簽:<c:if> <c:choose> <c:when> <c:otherwise>

循環控制標簽:<c:forEach> <c:forTokens>

URL 相關標簽:<c:import> <c:url> <c:redirect> <c:param> 。 

自定義標簽開發整理

從jsp1.1開始就可以在jsp頁面中使用自定義標簽了,使用自定義標簽不但可以實現代碼重用,而且可以使jsp代碼更簡潔。Jsp2.0的標簽擴展API中又增加了SimpleTag接口和其實現類SimpleTagSupport。

標簽擴展API層次結構:

  

TLD文件元素詳解:

每個自定義標簽都必須在TLD文件中聲明,TLD文件只不過是一個XML文件。根元素是<taglib>,它包含一個或者多個<tag>標簽,該元素用來聲明定制標簽。<taglib>元素中只有<tlib-version>元素是必須的,其他都是可選的。

TLD文件中的元素

標  簽

含  義

<taglib>

TLD文件的根元素

<tlib-version>

此標簽庫的版本

<jsp-version>

此標簽庫依賴的JSP版本。

<short-name>

 

<description>

<display-name>

<icon>

<uri>

<validator>

<listener>

<function>

當在JSP中使用標簽時,此標簽庫首選或者建議的前綴。當然可以完全忽略這個建議

描述信息

圖形工具可顯示的一個簡短名稱

圖形工具可顯示的圖標

指定使用該標簽庫中標簽的URI

關於該庫的TagLibraryValidator信息

指定事件監聽器類

定義一個在EL中使用的函數

<tag>

定義一個標簽

<tag>元素的子元素

標  簽

含  義

<description>

<display-name>

<icon>

<name>

指定針對標簽的信息

開發工具用於顯示的一個簡短名稱

可被開發工具使用的圖標

標簽名稱

<tag-class>

 

<tei-class>

Java標簽處理器類的名稱。注意這是處理器類的全限定名稱,比如com.xx.tag.TableTag

Javax.servlet.jsp.tagext.TagExtraInfo類的一個可選子類

<body-content>

 

<variable>

<example>

此標簽的主體部分的內容。其值可為scriptless\tagdependent\empty,默認為empty

定義腳本變量信息

使用該標簽例子的可選的非正式描述

<attribute>

包含了此標簽的一個屬性的元數據

<attribute>的子元素

標  簽

含  義

<description>

<name>

有關描述的文本信息

在jsp標簽中使用的屬性名稱

<required>

 

 

<rtexprvalue>

 

 

<type>

指定屬性是必須的還是可選的,默認為false,表示屬性可選。如果該值為true,則jsp頁面必須為該屬性提供一個值。可能的值true、false、yes、no

指定屬性是否能接受請求時表達式的值,默認為false,表示不能接受請求時表達式的值。可能值:true、false、yes、no

屬性的數據類型,該元素只能用在當<rtexprvalue>設置為true時。它指定當使用請求時屬性表達式(<%= %>)返回類型。默認string

 

實例(繼承SimpleTagSupport類方式):

編寫一個DateTag標簽,輸出系統時間。<c1:date/>,輸出的格式:2011年11月9日

step1

 寫一個java類,繼承SimpleTagSupport類

step2

 override doTag()方法,在該方法里,實現相應的處理邏輯

package mytag;

import java.io.IOException;

import java.text.SimpleDateFormat;

import java.util.Date;

import javax.servlet.jsp.JspException;

import javax.servlet.jsp.JspWriter;

import javax.servlet.jsp.PageContext;

import javax.servlet.jsp.tagext.SimpleTagSupport;

 

public class DateTag extends SimpleTagSupport{

@Override

public void doTag() throws JspException, IOException {

PageContext ctx = (PageContext)getJspContext();

JspWriter out = ctx.getOut();

SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");

out.println(sdf.format(new Date()));

}

}

step3

 在.tld文件當中,描述該標簽

<?xml version="1.0" encoding="UTF-8" ?>

<taglib xmlns="http://java.sun.com/xml/ns/j2ee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"

version="2.0">

<tlib-version>1.1</tlib-version>

<short-name>c1</short-name>

<uri>http://www.tarena.com.cn/mytag1</uri>

<tag>

<name>date</name>

<tag-class>mytag.DateTag</tag-class>

<body-content>empty</body-content>

</tag>

</taglib>

step4

 使用taglib導入標簽(jsp中)

<%@taglib prefix="c1" uri="http://www.tarena.com.cn/mytag1" %>

<c1:date/>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM