自定义jstl标签库

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

MyFunctions.java

代码:

[java] view plain copy

  1. public class MyFunctions {
  2. public static String sayHello(String name) {
  3. return "Hello " + name;
  4. }
  5. }

myfunctions.tld

自定义标签

xml代码:

[xhtml] view plain copy

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <taglib xmlns="http://java.sun.com/xml/ns/j2ee"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
  5. version="2.0">
  6. <description>my functions library</description>
  7. <display-name>my functions</display-name>
  8. <tlib-version>1.0</tlib-version>
  9. <short-name>my</short-name>
  10. <uri>http://www.bjsxt.com/functions</uri>
  11. <function>
  12. <name>sayHello</name>
  13. <function-class>com.bjsxt.struts.MyFunctions</function-class>
  14. <function-signature>java.lang.String sayHello(java.lang.String)</function-signature>
  15. </function>
  16. </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] view plain copy

  1. <%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
  2. <%@ taglib uri="http://www.bjsxt.com/functions" prefix="my" %>
  3. <%
  4. request.setAttribute("name", "David");
  5. %>
  6. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  7. <html>
  8. <head>
  9. <title>testTemplate</title>
  10. </head>
  11. <body>
  12. ${my:sayHello(name) }
  13. </body>
  14. </html>

最后:

还需要在web.xml中注册:

eg:

[java] view plain copy

  1. <jsp-config>
  2. <taglib>
  3. <taglib-uri>www.bjsxt.com/functions</taglib-uri>
  4. <taglib-location>/WEB-INF/my.tld</taglib-location>
  5. </taglib>
  6. </jsp-config>

注:要引用的时候,在web.xml文件中配置的那个uri的地址就是我们要引进时的那个uri

注意:

  

可能出现的异常

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自带的标签元素冲突,重名等

时间: 2024-11-05 16:10:41

自定义jstl标签库的相关文章

学会怎样使用Jsp 内置标签、jstl标签库及自定义标签

学习jsp不得不学习jsp标签,一般来说,对于一个jsp开发者,可以理解为jsp页面中出现的java代码越少,对jsp的掌握就越好,而替换掉java代码的重要方式就是使用jsp标签. jsp标签的分类: 1)内置标签(动作标签): 不需要在jsp页面导入标签 2)jstl标签: 需要在jsp页面中导入标签 3)自定义标签 : 开发者自行定义,需要在jsp页面导入标签 1.内置标签(动作标签): <jsp:forward />转发标签: 语法:<jsp:forward page="

自定义JSTL标签和函数库

一.自定义JSTL标签 1.编写标签处理类: (1)实现 SimpleTag 接口,通过 setJspContext()方法可以获取到 jspContext 对象,实际上也是 pageContext 对象. 在 doTag() 方法中完成逻辑,通过 JspWriter out = jspContext.getOut(); 获取到的 out 对象,可以输出到页面.如: /** * MyTag2 * * @author solverpeng * @create 2016-07-03-10:20 */

JavaWeb-12 (自定义标签库开发&amp;JSTL标签库)

JavaWeb-12:自定义标签库开发&JSTL标签库 自定义标签库开发 一.自定义标签简介 自定义标签主要用于移除Jsp页面中的java代码. 使用自定义标签移除jsp页面中的java代码,只需要完成以下两个步骤: 1.编写一个实现Tag接口的Java类(标签处理器类). 2.编写标签库描述符(tld)文件,在tld文件中把标 实验:项目架构如下: a.tld <?xml version="1.0" encoding="utf-8" ?> &l

自定义JSTl标签-----满足自身需求(JSTL标签库无法满足需求时)

一.JSTL是: apache开发的一套jsp标签,后来捐献给了sun,sun将其命名为jstl 二.JSTL的使用(ideal中) 1.导入jar包到pom文件中: <!--jstl的jar--><dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> <scope

JavaWeb基础—EL表达式与JSTL标签库

EL表达式: EL 全名为Expression Language.EL主要作用 获取数据(访问对象,访问数据,遍历集合等) 执行运算 获取JavaWeb常用对象 调用Java方法(EL函数库) 给出一个小案例: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ page import="com.jiangbei.domain

Java Web(七) JSTL标签库

在之前我们学过在JSP页面上为了不使用脚本,所以我们有了JSP内置的行为.行为只能提供一小部分的功能,大多数的时候还是会用java脚本,接着就使用了EL表达式,基本上EL表达式看似能满足我们的要求,它能够获取各种对象,各种值,并且还不会抛出NullPointerException之类的错误,但是EL表达式功能还是有限,例如不能遍历集合等,因此为了完善JSP,让其完全不使用java代码,就有了jstl标签库,使用jstl和EL的配合使用,基本上可以实现所有的功能,显示数据,遍历数据等. 一.为什么

javaweb学习总结(二十八)——JSTL标签库之核心标签

一.JSTL标签库介绍 JSTL标签库的使用是为弥补html标签的不足,规范自定义标签的使用而诞生的.使用JSLT标签的目的就是不希望在jsp页面中出现java逻辑代码 二.JSTL标签库的分类 核心标签(用得最多) 国际化标签(I18N格式化标签) 数据库标签(SQL标签,很少使用) XML标签(几乎不用) JSTL函数(EL函数) 三.核心标签库使用说明 JSTL的核心标签库标签共13个,使用这些标签能够完成JSP页面的基本功能,减少编码工作. 从功能上可以分为4类:表达式控制标签.流程控制

jstl标签库基础教程及其使用代码

概述 在 JSP 页面中,使用标签库代替传统的 Java 片段语言来实现页面的显示逻辑已经不是新技术了,然而,由自定义标签很容易造成重复定义和非标准的实现.鉴于此,出现了 JSTL ( JSP Standard Tag Library ).大多数 JSP 页面逻辑提供了实现的 JSTL 技术,该技术本身就是一个标签库. Sun 公司 Java 规范标准的 JSTL 由 apache jakarta 组织负责维护.作为开源的标准技术,它一直在不断地完善. JSTL 的发布包有两个版本: Stand

Struts标签、Ognl表达式、el表达式、jstl标签库这四者之间的关系和各自作用

<转载> 我之前虽然会用,但是一直分不清彼此之间有什么区别,所以查找资料,将它们进行整合区分,加深了解, 一 介绍 1.Struts2的作用   Struts2标签库提供了主题.模板支持,极大地简化了视图页面的编写,而且,struts2的主题.模板都提供了很好的扩展性.实现了更好的代码复用.Struts2允许在页面中使用自定义组件,这完全能满足项目中页面显示复杂,多变的需求.Struts2的标签库有一个巨大的改进之处,struts2标签库的标签不依赖于任何表现层技术,也就是说strtus2提供