原文链接:https://www.it610.com/article/442039.htm

步骤如下:

1、写tld文档:用来指定标签的名字,标签库等。

2、写标签处理器类。

3、配置到web.xml中
4、在jsp中使用新定义的标签

例:实现一个自定义标签 功能如下 如果字符串长度超过规定长,则截取,并根据要求添加省略号

tls文档:

<?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>1.0</tlib-version>
<jsp-version>2.0</jsp-version>
<short-name>ip</short-name>
<uri>http://www.xx.tag</uri>
<tag>
<name>stringCut</name>
<tag-class>com.xx.utils.jstl.JSTLStringCut</tag-class>
<attribute>
<name>str</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue><!-- 是否支持el表达式 -->
<type>java.lang.String</type>
<description>輸入字符串</description>
</attribute>
<attribute>
<name>length</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
<type>java.lang.Integer</type>
<description>要显示字符串的长度</description>
</attribute>
<attribute>
<name>showDot</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
<type>java.lang.Boolean</type>
<description>是否显示点号</description>
</attribute>
</tag>
</taglib>

标签处理器类:

package com.xx.utils.jstl;

import java.io.IOException;  

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyTagSupport; public class JSTLStringCut extends BodyTagSupport{ private String str ;
private Integer length ;
private Boolean showDot; @Override
public int doStartTag() throws JspException {
System.out.println(str);
System.out.println(length);
System.out.println(showDot);
try {
if(str==null){
//do nothing
}else{
if(str.length()>length){
str=str.substring(,length);
if(showDot){
str=str+"...";
}
}
pageContext.getOut().print(str);
}
} catch (IOException e) {
e.printStackTrace();
}
return BodyTagSupport.EVAL_BODY_INCLUDE;//执行标签内容
} @Override
public int doEndTag() throws JspException {
return BodyTagSupport.EVAL_BODY_INCLUDE;
} public String getStr() {
return str;
} public void setStr(String str) {
this.str = str;
} public Integer getLength() {
return length;
} public void setLength(Integer length) {
this.length = length;
} public Boolean getShowDot() {
return showDot;
} public void setShowDot(Boolean showDot) {
this.showDot = showDot;
} }

配置到web.xml

<jsp-config>
<taglib>
<taglib-uri>http://www.xx.tag</taglib-uri>
<taglib-location>/WEB-INF/tags/string-cut.tld</taglib-location>
</taglib>
</jsp-config>

jsp中使用标签

jsp页面顶部加入:

  

<%@ taglib uri="http://www.xx.tag" prefix="ip" %>  
<ip:stringCut str="${str}" length="" showDot="true"></ip:stringCut>

自定义jstl标签*的更多相关文章

  1. 自定义JSTL标签和函数库

    一.自定义JSTL标签 1.编写标签处理类: (1)实现 SimpleTag 接口,通过 setJspContext()方法可以获取到 jspContext 对象,实际上也是 pageContext ...

  2. 如何自定义JSTL标签与SpringMVC 标签的属性中套JSTL标签报错的解决方法

    如何自定义JSTL标签 1.创建一个类,从SimpleTagSupport继承 A) 通过继承可以获得当前JSP页面上的对象,如JspContext I) 实际上可以强转为PageContext II ...

  3. 自定义EL函数、自定义JSTL标签

    自定义EL函数 1.做一个类(静态) package com.maya.el; public class ELBiaoDaoShi { public static String TiHuan(Stri ...

  4. 自定义jstl标签库

    开发环境:Spring+SpringMVC +Maven +Mybatis JSTL 标签库的配置: 导入对应的 jstl.jar 和 standard.jar ,我使用的配置如下: <prop ...

  5. (十三)自定义JSTL标签

    前面的博客,我们讲过了 自定义 el函数 : 讲一个 自定义标签技术 : 目录 自定义标签 快速入门:使用标签输出客户机IP 关于标签处理器类的方法 自定义标签功能扩展 传统标签 简单标签 配置简单标 ...

  6. 自定义jstl标签开发

    从jsp1.1开始就可以在jsp页面中使用自定义标签了,使用自定义标签不但可以实现代码重用,而且可以使jsp代码更简洁.Jsp2.0的标签扩展API中又增加了SimpleTag接口和其实现类Simpl ...

  7. EL表达式、JSTL标签库

    一.EL(Expression Language)表达式 语法结构:${var} 若要停用对EL表达式的评估的话,需要使用page指令将isELIgnored属性值设为true: <%@ pag ...

  8. JSP学习笔记(3)——JSTL 标签库

    JSP Standard Tag Lib,名为JSP标准标签库,设计的目的主要用来方便我们将数据输出,而不是使用JSP中的语法<% %> <%= %> <%! %> ...

  9. 12 自定义标签/JSTL标签库/web国际化/java web之设计模式和案例

    EL应用      自定义一个标签,实现两个字符串的相加 1回顾      1.1servlet生命周期           init(ServletConfig)           service ...

随机推荐

  1. Vue中vue-i18n结合element-ui实现国际化

    (一)添加依赖模块 在package.json文件中添加vant模块的依赖,如: // package.json { "dependencies": { "element ...

  2. cf1214E

    题意简述:构造一棵包含2*n个节点的树,要求2*i 和 2*i-1之间的距离等于d[i]<=n 1<=i<=n 给出N和d数组,输入对应的边 题解:对d数组按照从大到小排序,然后首先 ...

  3. C# WPF Bing地图展示

    微信公众号:Dotnet9,网站:Dotnet9,问题或建议,请网站留言: 如果您觉得Dotnet9对您有帮助,欢迎赞赏 内容目录 实现效果 业务场景 编码实现 本文参考 源码下载 1.实现效果 Bi ...

  4. Linux下快速删除大量小文件引起的磁盘inode(目录索引)过满

    1)首先建立一个空白文件夹. mkdir /tmp/empty 然后安装下rsync yum install -y rsync 2)之后使用以下语句即可快速的删除文件. rsync --delete- ...

  5. java中生成任意之间数的随机数

    public static int cssjs(int a,int b) { Random rand=new Random(); int zhi; zhi=rand.nextInt(b)%(b-a+1 ...

  6. 内置中间件CommonMiddleware

    django.middleware.common.CommonMiddleware:通用的中间件 (1)如果网站在设计的时候,url带有"/",而用户在访问的时候没有加上" ...

  7. centos7上python3.6.5的安装及卸载

    前言 最近开始安装配置公司给我的台式机,加上刚刚购买的ECS,处女座的我,环境前前后后大概装了有十来次吧,之前装总是临时网上找教程,但是装下来总是感觉有点别扭,当时服务器装的是3.6.5,虚拟机装的是 ...

  8. poj1141题解

    题意 空序列是规则序列:用小括号(或者方括号)把一个规则序列括起来依然是规则序列:两个规则序列并列在一起仍然是规则序列. 给出一个括号字符串S,求一个规则序列ANS,满足S是ANS的子序列且ans尽可 ...

  9. 获取properties文件的内容

    获取properties文件的内容 public void test() throws Exception{ String resource = "application.propertie ...

  10. gulp-sass设置不同样式风格的输出方法

    sass最终输出的样式包括下面几种样式风格:嵌套输出方式 nested展开输出方式 expanded 紧凑输出方式 compact 压缩输出方式 compressed sass: nav { ul { ...