jsp自定义标签
程序员文章站
2022-03-04 11:55:44
...
首先写下此标签要实现的功能的类,在这里假如此标签的功能是输出hello world和属性的值:
package com.chinasoft.hxwy;
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;
public class taglibTest extends TagSupport{ //要继承类TagSupport通过覆盖它的方法来实现
private String param;
public String getParam() {
return param;
}
public void setParam(String param) {
this.param = param;
}
@Override
public int doStartTag() throws JspException {
try {
pageContext.getResponse().getWriter().print("Hello World!"+param+"</br>");
} catch (IOException e) {
e.printStackTrace();
}
// return SKIP_BODY; //跳过开始和结束标签之间的代码。
return EVAL_BODY_INCLUDE; //将body的内容输出到存在的输出流中,包括是jsp代码,也可以被输出
}
}
然后在WEB-INF下建立tld格式的文件,如lpm.tld
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
<taglib>
<tlibversion>1.2</tlibversion>
<jspversion>1.1</jspversion>
<shortname>lpm</shortname> <!-- 使用标签时的前缀 -->
<uri>/tags/lpm</uri>
<tag>
<name>mytaglib</name> <!-- 使用时跟在前缀后的名字,组合成一个标签 -->
<tagclass>com.chinasoft.hxwy.taglibTest</tagclass> <!-- 在这里写刚才定义好的类 -->
<bodycontent>jsp</bodycontent> <!--可以为empty和jsp,如果为empty,开始标签和结束标签之间如果有jsp内容就会出错 -->
<attribute>
<name>param</name> <!--定义此标签可以用的属性名-->
<required>true</required> <!-- 表示这个属性是否可以为空,为true一定要有属性值 -->
<rtexprvalue>true</rtexprvalue> <!-- 表示是否可以使用JSP表达式 -->
</attribute>
</tag>
</taglib>
然后在web.xml里面添加如下代码:
<jsp-config>
<taglib>
<taglib-uri>/tags/lpm</taglib-uri> //跟上面定义的uri值一样
<taglib-location>/WEB-INF/lpm.tld</taglib-location> //写文件所在的路径
</taglib>
</jsp-config>
最后在jsp界面上使用它:
......
<body>
<lpm:mytaglib param="welcome china!"/>
<lpm:mytaglib param="xiamen">ffffff:<input type="text" ></lpm:mytaglib>
</body>
.......
开启服务运行IE就能在界面上看到如下结果:
Hello World!welcome china!
Hello World!xiamen
ffffff:
上一篇: winform去掉右上角关闭按钮的方法
下一篇: Android 自定义属性,系统控件扩展