zoukankan      html  css  js  c++  java
  • 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       自定义标签测试结束
  • 相关阅读:
    进程池,线程池,协程,gevent模块,协程实现单线程服务端与多线程客户端通信,IO模型
    线程相关 GIL queue event 死锁与递归锁 信号量l
    生产者消费者模型 线程相关
    进程的开启方式 进程的join方法 进程间的内存隔离 其他相关方法 守护进程 互斥锁
    udp协议 及相关 利用tcp上传文件 socketserver服务
    socket套接字 tcp协议下的粘包处理
    常用模块的完善 random shutil shevle 三流 logging
    day 29 元类
    Django入门
    MySQL多表查询
  • 原文地址:https://www.cnblogs.com/zhzcode/p/9838614.html
Copyright © 2011-2022 走看看