自定义标签

Struts 自定义标签操作步骤。

一、网站目录结构

1.1 输入网站主目录:

1.2 web.xml 配置文件是:


1.3 tlb 标签库文件所在目录是:

1.4 java 程序文件所在目录是:

二、标签文件

2.1 输入新建的标签文件名(后缀 tld):

2.2 标签文件位置如下:

2.3 标签文件示例内容:

输入新建的标签名:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
<tlib-version>2.2.3</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>tc</short-name>
<uri>/taglibtc</uri>
<display-name>"Struts Tags"</display-name>
<description><![CDATA["To make it easier to access dynamic data;
the Apache Struts framework includes a library of custom tags.
The tags interact with the framework's validation and internationalization features;
to ensure that input is correct and output is localized.
The Struts Tags can be used with JSP FreeMarker or Velocity."]]></description>
<tag>
  <name>tcBean</name>
  <tag-class>pjmstc.tcBean</tag-class>
  <body-content>JSP</body-content>
  <description><![CDATA[Execute an action from within a view]]></description>
</tag>
</taglib>
内容 描述
<uri>XXX</uri> 标签文件标识
<name>XXX</name> 定义标签的名字
<tag-class>XXX</tag-class> 定义标签的类
<body-content>XXX</body-content> 定义标签的内容属性

2.4 配置标签文件到 web.xml

输入标签文件标识,例:/mytag

在 web.xml 文件的 </welcome-file-list> 标识下面添加如下配置内容:

<taglib>
  <taglib-uri>/taglibtc</taglib-uri>
  <taglib-location>/WEB-INF/taglibtc.tld</taglib-location>
</taglib>
内容 描述
<taglib-uri>XXX</taglib-uri> 标签文件标识,要与 JSP 画面对应

三、类文件

3.1 输入新建的类的全称,例:myproject.app.login

3.2 类文件全称如下:

3.3 类文件内容示例:

package pjmstc;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.tagext.TagSupport;

public class tcBean extends TagSupport {
  public int doStartTag() throws JspException {
    try{
      pageContext.getOut().print("My Tag OK!");
    }
    catch(Exception e)
    {}
    String valid = pageContext.getRequest().getParameter("key");
    // 如果flag设定为key,就显示本体文字内容
    if(valid!=null)
      if(valid.equals("123")) {
        return EVAL_BODY_INCLUDE;
      }
    return SKIP_BODY;
  }
}
内容 描述
TagSupport 标签类的父类,还可以使用:
doStartTag() 标签开始时的处理
return EVAL_BODY_INCLUDE 返回该值表示页面中标签内部的内容有效
return SKIP_BODY 返回该值表示页面中标签内部的内容全部忽略

注:编译此 JAVA 文件需要设置环境变量 CLASSPATH 添加这两个引用(具体位置参照 Tomcat\common\lib):

jsp-api.jar 和 servlet-api.jar

输入 TOMCAT 安装目录:

CLASSPATH = ...;

四、JSP 文件

新建一个 JSP 文件以测试标签,文件内容示例如下:

4.1 输入文件名

4.2 文件内容示例如下:

<%@ taglib uri="/taglibtc" prefix="abc" %>
<abc:tcBean>abcd</abc:tcBean>

4.3 测试如下链接