【自定义标签开发】07-标签案例-开发if标签

前面我们开发了防盗链标签,接下来开发一个我们在其他框架中经常见到的标签-----if标签。
我们通过自己开发if标签,来理解sun公司的<c:if>标签。

我们自己开发的if标签的效果如下:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib uri="/example" prefix="z" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>Hello</title>
  </head>
 
  <body>
      <z:if test="${user!=null}">
         欢迎您!(*^__^*)
      </z:if>
      
      <z:if test="${user==null}">
         您没有登录!~~(>_<)~~
      </z:if>
  </body>
 
</html>

首先我们创建一个标签处理器类:


然后在这个处理器类中写我们的if逻辑:
package org.zyg.web.exampleTag;

import java.io.IOException;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.SimpleTagSupport;

public class IFTag extends SimpleTagSupport {
    
    private boolean test;
    
    public void setTest(boolean test) {
        this.test = test;
    }

    @Override
    public void doTag() throws JspException, IOException {
        if(test){
            this.getJspBody().invoke(null);
        }
    }
}    
是不是很简单,只要判断test的真假值,就确定标签体是否显示。

下面在z.tld配置文件中注册这个标签:
<tag>
    <name>if</name><!-- 标签名 -->
    <tag-class>org.zyg.web.exampleTag.IFTag</tag-class>
    <body-content>scriptless</body-content><!-- 有无标签体(单标签还是成对标签) -->

    <attribute>
        <name>test</name>
        <required>true</required>
        <rtexprvalue>true</rtexprvalue>
    </attribute>
</tag>

然后重启Web项目,测试:

很明显我们的用户没有登录,所以没有用户信息,当然是没有登录。

我们接下来模拟一下用户登录:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib uri="/example" prefix="z" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>Hello</title>
  </head>
 
  <body>
        <%
            session.setAttribute("user","zyg");
         %>
 
      <z:if test="${user!=null}">
         欢迎您!(*^__^*)
      </z:if>
      
      <z:if test="${user==null}">
         您没有登录!~~(>_<)~~
      </z:if>
  </body>
 
</html>

这样再来访问,用户是登录的,所以显示:

以上就是if标签的开发过程。

转载请注明出处:http://blog.csdn.net/acmman/article/details/51178736

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

光仔December

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值