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