• JSTL


     【概述】

    Jsp standard tag library的缩写,简称为Jsp标准标签库。Jstl不是用于替代El表达式,Jstl是对El表达式的功能进行补充。

    【基本标签】

    1)       <c:out>标签

    • 作用

                  显示(输出)数据对象或表达式的结果。

    • 属性

    -- value           :待输出内容(常量、表达式)

    --escapeXml :是否忽略标签的原本含义。true表示忽略。表将将作为一般文本内容进行显示。否则将正常解释。

    2)       <c:set>标签

    • 作用

    设置作用域的属性值。相当于java的setAttribute()。

    • 属性

    --var               :作用域属性的名称

    -- value           :作用域属性的值

    --scope          :作用域的范围,application、session、request、page

    3)       <c:remove>标签

    • 作用

    移出指定作用域中的属性值。相当于removeAttribute()方法

    • 属性

    --var               :待删除属性的名称

    --scope          :属性的作用域范围

    4)       <c:if>标签

    • 作用

                  相当于Java中的if语句,起到逻辑判断功能。

    • 属性

    --test              :执行if标签的条件判断表达式

    --var               :表达式存储在作用域中的属性名

    5)       <c:choose>标签(一级标签)

    • 作用

                  多分支条件语句。相当于Java中的switch语句。

    6)       <c:when>标签(二级标签)

    • 作用

           执行分支条件判断。相当于case语句。只能用在<c:choose>标签内

    • 属性

    --test              :执行逻辑判断。

    7)       <c:otherwise>标签(二级标签)

    • 作用

                  相当于default语句。只能用在<c:choose>标签中。

    8)       <c:forEach>标签

    • 作用

                  控制循环次数或遍历集合中元素。

    • 属性

    --begin           :循环变量的(初值)起始值

    --end              :循环变量的终止值

    --step             :循环变量的增长速度(步长)

    --var               :作用域中属性的名称

    --itmes           :待遍历的集合对象

    【自定义函数】

    1)       创建.tld文件

    2)       复制标准标签库中函数的描述文件内容并粘贴到自定义的tld文件中

    3) 修改描述文件(自定义的.tld文件)

    4) 编写对应的Java方法

     1 public class ShowInfo {
     2     /**
     3      * 自定义函数的要求
     4      *     1、方法需要使用public修饰符进行修饰
     5      *     2、方法必须为静态方法
     6      * @param name
     7      * @return
     8      */
     9     public static String show(String name){
    10         return "Hello, " + name;
    11     }
    12 }

    5) 应用自定义函数

    1   <body>
    2       ${myFn:show("mike")}
    3       
    4   </body>

    6) 执行结果

    【自定义标签】

    1)       创建Tld文件

    2)       复制标准标签库描述文件的内容到自定义Tld文件中

    3)       配置自定义标签

     1 <taglib xmlns="http://java.sun.com/xml/ns/javaee"
     2     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     3     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
     4     version="2.1">
     5     
     6   <description>customer tag library</description>
     7   <display-name>customer tag</display-name>
     8   <tlib-version>1.0</tlib-version>
     9   <short-name>t</short-name>
    10   <uri>http://hl/tag/mytag</uri>
    11 
    12   <validator>
    13     <description>
    14         Provides core validation features for JSTL tags.
    15     </description>
    16     <validator-class>
    17         org.apache.taglibs.standard.tlv.JstlCoreTLV
    18     </validator-class>
    19   </validator>
    20 
    21 
    22   <tag>
    23     <description>
    24         this is tag description
    25     </description>
    26     <!-- 自定义标签名称 -->
    27     <name>showText</name>
    28     <!-- 标签所对应的Java类 -->
    29     <tag-class>cn.hl.tag.ShowInfo</tag-class>
    30     <!-- 标签内容的类型 -->
    31     <body-content>JSP</body-content>
    32     <!-- 标签的属性,对应于Java代码的字段+set访问器 -->
    33     <attribute>
    34         <description>
    35             user's name
    36         </description>
    37         <!-- 属性名 -->
    38         <name>name</name>
    39         <!-- 是否为必须提供的属性 -->
    40         <required>true</required>
    41         <!-- 是否支持Jsp表达式 -->
    42         <rtexprvalue>true</rtexprvalue>
    43     </attribute> 
    44     <attribute>
    45         <name>other</name>
    46         <required>false</required>
    47         <rtexprvalue>true</rtexprvalue>
    48     </attribute>   
    49   </tag>
    50 </taglib>

    4) 编写对应的处理类

     1 /**
     2  * 需要继承于TagSupport
     3  * @author Terry
     4  *
     5  */
     6 public class ShowInfo extends TagSupport{
     7     //属性,对应于配置文件的attribute
     8     private String name;
     9     private boolean other;
    10     
    11     public void setName(String name) {
    12         this.name = name;
    13     }
    14     
    15     public void setOther(boolean other){
    16         this.other = other;
    17     }
    18 
    19 
    20     /**
    21      * 控制标签后的内容的显示方式
    22      *     EVAL_PAGE        :正常显示标签后的内容
    23      *     SKIP_PAGE        :忽略标签后内容的显示
    24      */
    25     @Override
    26     public int doEndTag() throws JspException {
    27         System.out.println("do End Tag......");
    28         
    29         if(other){
    30             return EVAL_PAGE;
    31         }
    32         else{
    33             return SKIP_PAGE;
    34         }
    35     }
    36 
    37     /**
    38      * 控制标签中的内容的显示方式
    39      *     EVAL_BODY_INCLUDE    :包含标签的内容(将标签中间内容添加到输出流中)
    40      *     SKIP_BODY            :忽略标签的内容(不进行输出)
    41      */
    42     @Override
    43     public int doStartTag() throws JspException {
    44         System.out.println("do start Tag......");
    45         
    46         if("baidu".equals(name))
    47             return EVAL_BODY_INCLUDE;
    48         else
    49             return SKIP_BODY; 
    50         
    51     }
    52     
    53 }

    5)测试

     1       <t:showText name="Mike" other="true">
     2           <a href="http://baidu.com">baidu</a>
     3       </t:showText>
     4       <br />
     5       <t:showText name="baidu" other="true">
     6           <a href="http://google.com">google</a>
     7       </t:showText>
     8       <br />
     9       
    10       <hr />
    11       自定义标签测试结束
  • 相关阅读:
    flyway
    xxl-job
    响应式布局
    position: fixed
    position: absolute
    position: relative
    GDB高级一点的命令
    坑爹的大页内存
    input8按键对照
    discuz插件应用原理分析
  • 原文地址:https://www.cnblogs.com/zhzcode/p/9838614.html
Copyright © 2020-2023  润新知