JSTL

1.jstl (java standard tag lib  java标准标签库) 
    (1)jstl是什么 
        apache开发的一套jsp标签,后来捐献给了sun, 
    sun将其命名为jstl。 
    (2)如何使用jstl 
        step1,将jstl相关的jar文件拷贝到WEB-INF\lib下。 
        注: 
            如果使用javaee5.0(包含了jstl相关的jar文件) , 
        一般不需要再拷贝了。 
        step2,使用taglib指令导入相应的标签。 
            <%@taglib uri="http://www.tarena.com.cn/tag"  
            prefix="c"%> 
                uri是一个命名空间, 
                prefix是命名空间的前缀(别名)。 
            注: 
                命名空间(namespace)是为了区分同名元素而设置 
                的一个字符串。 
                 
    (3)jstl几个核心的标签 
        1)if 
            <c:if test="" var="" scope=""> 
                标签体 
            </c:if>     
            当test属性值为true时,容器会执行标签体的内容。 
            test属性可以使用el表达式来计算。 
            var属性:指定一个绑订名称。 
            scope属性:指定绑订的范围,值可以是(page,request, 
                            session,application)。 
        2)choose 
            <c:choose> 
                <c:when test=""> 
                </c:when> 
                <c:otherwise> 
                </c:otherwise> 
            </c:choose> 
            when可以出现1次或者多次,表示一个分支,当 
            test属性值为true时,会执行该分支。 
            othewise可以出现0次或者1次,表示例外。

 
        3)forEach 
            <c:forEach items="" var="" varStatus=""> 
            </c:forEach>     
            用来遍历集合或者数组。 
            items属性用来指定要遍历的集合或者数组,可以 
            使用el表达式。 
            var属性:用来指定一个绑订名,绑订范围固定是 
            pageContext。 
                注:每次从集合或者数组中取一个元素,然后将其 
                    绑订到pageContext上,绑订名由var属性来指定。 
            varStatus属性:用来指定一个绑订名,绑订范围固定是 
            pageContex。 
                注: 
                    绑订值是一个特殊的对象,该对象提供了一些 
                    方法,用来获得当前遍历的状态。 
                    getIndex() : 获得当前被遍历的元素的下标( 
                                        从0开始    )。 
                    getCount():获得当前是第几次遍历(从1开始) 
                         
<c:forEach items="${requestScope.users}" var="user" varStatus="s">
                <tr class="row${s.index%2+1}">
                    <td>${s.index}</td>
                    <td>${user.name}</td>
                    <td>
                        <c:if test="${user.gender=='m'}" var="flag" scope="request">男</c:if>
                        <c:if test="${!flag}">女</c:if>
                    </td>
                    <td>
                        <c:if test="${user.age<18}" var="flag" scope="request">未成年</c:if>
                         <c:if test="${!flag}">成年</c:if>
                    </td>
                    <td>${s.count}</td>
                    <td><a href="2.jsp">update</a></td>
                </tr>
            </c:forEach> 
     

4.自定义标签

1.建类

public class DateTag extends SimpleTagSupport {
    Private String pattern;
    
    public String getPattern() {
        return pattern;
    }

    public void setPattern(String pattern) {
        this.pattern = pattern;
    }

    @Override
    public void doTag() throws JspException, IOException {
        PageContext ctx=(PageContext)getJspContext();
        JspWriter jw=ctx.getOut();
        Date date=new Date();
        SimpleDateFormat sdf=new SimpleDateFormat(pattern);
        String d=sdf.format(date);
        jw.println(d);
    }
}
1.1继承SimpleTagSupport 
1.2定义属性(接收页面指定的参数)添加GET/SET方法
1.3重写doTag方法
PageContext ctx=(PageContext)getJspContext();
JspWriter jw=ctx.getOut();
2.建tag.tld(参考c.tld)
2.1
<?xml version="1.0" encoding="UTF-8" ?>
<taglib xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
    version="2.1">
  <tlib-version>1.1</tlib-version>
  <short-name>c1</short-name>
  <uri>aaa</uri>
   
<tag>
        <name>date</name>
        <tag-class>DateTag</tag-class>
        <body-content>empty</body-content>

    <attribute>
        <name>pattern</name>
        <required>true</required>
        <rtexprvalue>false</rtexprvalue>
        </attribute>
</tag>
    </taglib>
3.jsp页面
<%@page pageEncoding="utf-8"  contentType="text/html; charset=utf-8"%>
<%@taglib uri="aaa" prefix="c1"%>
<html>
    <head></head>
    <body style="font-size:30px">
        <c1:date pattern="yyyy-MM-dd"/>
    </body>
</html>

转载于:https://my.oschina.net/u/2492097/blog/522287

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值