`
tianhandigeng
  • 浏览: 374496 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

JSP - JSTL 如何自定义标签库

    博客分类:
  • jsp
阅读更多

jstl标签库的配置
 * 将jstl.jar和standard.jar拷贝到WEB-INF/lib下(如果使用el表达式,不用拷贝这两个jar)
 
 注意:jstl必须在能够支持j2ee1.4/servlet2.4/jsp2.0版本上的容器才能运行,这个环境
      是目前较为常用的环境
     
标签库的使用
 * 采用taglib指令引入

1 <%@ taglib prefix= "c"   uri= "http://java.sun.com/jsp/jstl/core " %> 
2 <%@ taglib prefix= "fmt" uri= "http://java.sun.com/jsp/jstl/fmt " %>

  
  
自定义函数库:
 1、定义类和方法(方法必须是public static) 
 2、编写自定义tld文件,并且将此文件放到WEB-INF或WEB-INF任意子目录下
 3、在jsp中采用taglib指令引入自定义函数库
 4、采用 前缀+冒号(:)+函数名 调用即可 

MyFunctions.java  

01 Myfunctions.java代码 
02 public class MyFunctions {   
03         
04     public static String sayHello(String name) {   
05        return "Hello " + name;   
06     }   
07        
08 }   
09 public class MyFunctions {
10      
11     public static String sayHello(String name) {
12        return "Hello " + name;
13     }
14     
15 }


   
myfunctions.tld
自定义标签

Xml代码

01 <? xml version = "1.0" encoding = "UTF-8" ?>  
02      
03 < taglib xmlns = "http://java.sun.com/xml/ns/j2ee "   
04    xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance "   
06    version = "2.0" >  
07          
08    < description >my functions library</ description >  
09    < display-name >my functions</ display-name >  
10    < tlib-version >1.0</ tlib-version >  
11    < short-name >my</ short-name >  
12    < uri >http://www.bjsxt.com/functions</ uri >  
13        
14    < function >  
15      < name >sayHello</ name >  
16      < function-class >com.bjsxt.struts.MyFunctions</ function-class >  
17      < function-signature >java.lang.String sayHello(java.lang.String)</ function-signature >  
18    </ function >  
19        
20 </ taglib >  
21 <? xml version = "1.0" encoding = "UTF-8" ?>
22  
23 < taglib xmlns = "http://java.sun.com/xml/ns/j2ee "
26    version = "2.0" >
27       
28    < description >my functions library</ description >
29    < display-name >my functions</ display-name >
30    < tlib-version >1.0</ tlib-version >
31    < short-name >my</ short-name >
32    < uri >http://www.bjsxt.com/functions</ uri >
33     
34    < function >
35      < name >sayHello</ name >
36      < function-class >com.bjsxt.struts.MyFunctions</ function-class >
37      < function-signature >java.lang.String sayHello(java.lang.String)</ function-signature >
38    </ function >
39     
40 </ taglib >

 


jstl_fn.jsp

注意与前面的配置文件myfunctions.tld相对应,
prefix对应<short-name>my</short-name>
uri对应 <uri>http://www.bjsxt.com/functions</uri>
可使用以下面两种方式给name赋值:
1、${my:sayHello("David") }
2、request.setAttribute("name", "David");

Java代码

01 <%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>   
02 <%@ taglib uri="http://www.bjsxt.com/functions " prefix="my" %>   
03      
04 <%   
05 request.setAttribute("name", "David");   
06 %>   
07      
08 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">   
09 < html >   
10    < head >   
11      < title >testTemplate</ title >   
12    </ head >   
13    < body >   
14      ${my:sayHello(name) }   
15    </ body >   
16 </ html >  
17 <%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
18 <%@ taglib uri="http://www.bjsxt.com/functions " prefix="my" %>
19  
20 <%
21 request.setAttribute("name", "David");
22 %>
23  
24 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
25 < html >
26    < head >
27      < title >testTemplate</ title >
28    </ head >
29    < body >
30      ${my:sayHello(name) }
31    </ body >
32 </ html >

 



补充:web-app version="2.4"
有时也需要在web.xml中添加对标签的定义:

Xml代码

01 < jsp-config >  
02      < taglib >  
03          < taglib-uri >www.bjsxt.com/functions</ taglib-uri >  
04          < taglib-location >/WEB-INF/my.tld</ taglib-location >  
05      </ taglib >  
06 </ jsp-config >  
07 < jsp-config >
08      < taglib >
09          < taglib-uri >www.bjsxt.com/functions</ taglib-uri >
10          < taglib-location >/WEB-INF/my.tld</ taglib-location >
11      </ taglib >
12 </ jsp-config >



注意:
   
可能出现的异常
1、The function xxx must be used with a prefix when a default namespace is not specified
--- 在jsp页面中调用方式不正确,可能将 ":" 写成了 "."

2、The function xxx cannot be located with the specified prefix
--- a) 类中定义的方法不是 public static 的方法
      b) 类中的方法名称和jsp自带的标签元素冲突,重名等

 

 

 

分享到:
评论

相关推荐

    JSTL自定义标签实例解析

    总结来说,JSTL自定义标签提供了一种高效且可重用的方法来扩展JSP的功能。通过编写处理类和定义TLD,我们可以创建符合特定需求的标签,使JSP页面更加简洁、易于维护。在实际应用中,自定义标签可以极大地提高代码的...

    jstl 自定义标签

    JSTL自定义标签允许开发者扩展标准标签库的功能,满足特定需求。自定义标签由三部分组成:标签库描述符(TLD),标签处理类(Tag Handler Class)以及标签体(Tag Body)。 1. **标签库描述符(TLD)**:这是一个XML...

    JSTL 以及自定义标签开发相关

    JSTL 以及自定义标签开发相关 JSTL 核心标签库标签共有13个,功能上分为4类: 1.表达式控制标签:out、set、remove、catch 2.流程控制标签:if、choose、when、otherwise 3.循环标签:forEach、forTokens 4.URL...

    JavaWeb-12:自定义标签库开发&JSTL标签库

    在JavaWeb开发中,自定义标签库和JSTL(JavaServer Pages Standard Tag Library)是两个重要的组件,它们极大地提高了代码的可读性和可维护性。本教程将深入探讨这两个主题,帮助开发者更好地理解和应用它们。 一、...

    JSP GridView --使用自定义标签实现ASP.NET的控件

    作者向我们展示了如何通过创建自定义标签库(Tag Library)来扩展JSP的功能,从而实现数据绑定和展示。 首先,自定义标签库是JSP的一个重要特性,允许开发者定义自己的标签来简化代码并提高可读性。在本例中,...

    JSTL 自定义标签

    **JSTL自定义标签详解** JavaServer Pages Standard Tag Library(JSTL)是用于简化JSP开发的一个标准标签库,它将常见的JSP代码片段封装成了可重用的标签,提高了代码的可读性和可维护性。在JSTL中,我们可以...

    JSTL 开发自定义标签使用的jar

    3. **在JSP页面中使用自定义标签**:在JSP页面中,你可以通过`&lt;%@ taglib %&gt;`指令引入自定义标签库,并用`&lt;mytag:tagname&gt;`的形式调用自定义标签。 4. **配置Web应用**:确保web.xml文件中配置了对JSTL的支持,包括...

    Java-JSTL(JSP标准标签库)介绍

    Java-JSTL,全称JavaServer Pages Standard Tag Library,是Java服务器页面标准标签库,它为JSP开发者提供了一系列预定义的、用于处理常见任务的标签。这些标签旨在简化JSP开发,提高代码的可读性和可维护性,降低与...

    jsp自定义标签-比较强大的

    jsp、jstl自定义标签实现的分页,实现的还是比较好的,没有在request、session等范围保存过数据,在pageContext范围内保存过集合的数据, 实现的方法还是比较简单的,适用性还是比较广的,我是实在是没分了,平时也...

    这个压缩包里有JSTL自定义标签开发实例的源码及相关文件

    在这个压缩包中,包含的是关于JSTL自定义标签的开发实例源码,对于正在学习JavaWeb技术的开发者来说,这是一个非常有价值的参考资料。 首先,我们要理解JSTL的基本概念。JSTL主要由五个核心部分组成:Core、XML、...

    自定义标签库

    - **JSP页面**: JSP页面是使用自定义标签的地方,它们通过`&lt;jsp:taglib&gt;`指令引用标签库。 2. **创建自定义标签** 创建自定义标签涉及以下几个步骤: - 定义标签处理类,该类需要继承`javax.servlet.jsp.tagext....

    jstl标准标签库

    JSTL是这样一个预定义的、标准的自定义标签库,它包含多个子库,每个子库都专注于不同的功能领域。 2. **JSTL的核心标签库(core)**: - `&lt;c:out&gt;`:用于安全地输出变量的值,防止XSS攻击。 - `&lt;c:if&gt;`:提供...

    taglib-standard-jstlel-1.2.5.zip

    在JavaWeb开发中,`taglib-standard-jstlel-1.2.5.zip`是一个重要的组件,它包含了用于增强JSP(JavaServer Pages)功能的标签库。这个压缩包主要用于提供一套标准的标签,使得开发者能够更加方便地在JSP页面上进行...

    jsp2.0 自定义标签和自定标签函数

    在JSP页面中,通过`指令`引入自定义标签库,并使用`&lt;tag-name&gt;属性...&lt;/tag-name&gt;`的格式调用自定义标签。 **二、自定义标签函数** 自定义标签函数是在JSP 2.0中引入的一种新的特性,它允许开发者像使用EL...

    jstl自定义标签

    **JSTL自定义标签**是JavaServer Pages Standard Tag Library(JSTL)的一个扩展功能,允许开发者创建自己的标签库来增强页面逻辑和表现。JSTL是一个标准的标签库,它提供了处理常见JSP任务的标签,如迭代、条件语句...

    JSTL JSP 自定义标签 分页

    jh-plugins是一项基于JSTL的自定义标签(插件)库,致力于打造一处实现、任何项目通用的开源项目。 jh-plugins已实现标签库:分页 jh-plugins特点:高效、轻巧、简单、适用(可融合与任何B/S架构的java项目) jh-...

    JSTL1.2.5 taglibs-standard-jstlel-1.2.5.jar

    源码阅读可以帮助开发者深入理解JSTL内部的实现机制,以及如何扩展自定义标签。 在实际应用中,JSTL的使用能够显著提高JSP页面的可维护性和可读性,因为它将业务逻辑和显示逻辑分离,遵循了MVC(Model-View-...

    自定义JSTL标签java项目文件

    4. **在JSP页面中使用自定义标签**:完成以上步骤后,就可以在JSP页面中像使用标准JSTL标签一样使用自定义标签了。 例如,假设我们有一个名为`myTag`的自定义标签,其处理类为`com.example.MyTag`,在TLD文件中定义...

    jsp 自定义标签的使用

    3. **在JSP页面中使用**:在JSP页面中,通过`&lt;%@ taglib %&gt;`指令引入自定义标签库,然后就可以像使用内置标签一样使用自定义标签了。 二、分页封装 分页是网页应用中常见的需求,通过自定义标签可以方便地实现。...

Global site tag (gtag.js) - Google Analytics