jsp引用java自定义函数_JSP自定义标签及函数的使用

JSP自定义标签及函数

自定义标签tags文件方式

在WEB-INF/tags目录下创建一个myTag.tag文件

Hello ${message}!

在JSP文件中使用myTag标签

输出结果为:Hello this is myTag!

自定义标签TLD文件方式

创建处理标签的类,重写doTag方法

package com.yeyun.web.taglib.tags;

import java.io.IOException;

import javax.servlet.jsp.JspException;

import javax.servlet.jsp.JspWriter;

import javax.servlet.jsp.tagext.SimpleTagSupport;

public class MyTagSupport extends SimpleTagSupport{

private String message;

public void doTag() throws JspException, IOException {

JspWriter writer = getJspContext().getOut();

writer.println("Hello " + message + "!");

}

public void setMessage(String message) {

this.message = message;

}

}

在WEB-INF/tlds目录下创建一个myTld.tld文件(taglib description,标签库描述符)

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"

version="2.0">

JSTL 1.1 tag library

自定义标签

1.1

t

/WEB-INF/tlds/myTld.tld

my自定义标签

myTag

com.yeyun.web.taglib.tags.MyTagSupport

empty

message

true

java.lang.String

消息

JSP文件中使用myTag标签(uri与TLD文件中的uri一致)

输出结果为:Hello this is my tld!

自定义标签函数

创建一个静态方法

package com.yeyun.web.taglib.fns;

public class MyFunction {

public static String getMessage(String message) {

return "Hello " + message + "!";

}

}

在WEB-INF/tlds目录下创建一个myFn.tld文件

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"

version="2.0">

JSTL 1.1 functions library

JSTL functions

1.1

fns

/WEB-INF/tlds/myFn.tld

获取信息

getMessage

com.yeyun.web.taglib.fns.MyFunction

java.lang.String getMessage(java.lang.String)

${fns:getMessage(message)}

JSP文件中使用自定义函数

${fns:getMessage("this is my function!")}

输出结果为:Hello this is my function!

总结

在使用任何标签库之前,必须在每个JSP文件的头部先引入标签库,然后在使用

*.tld文件的格式参考jstl.jar下META-INF目录下的fn.tld及c.tld

tag文件方式类似于freemarker的宏,可以创建自定义页面模板片段,供其他页面复用。如果需要复用页面代码片段,一般采用tag文件方式处理。涉及复杂的后台取数据及处理,采用tld文件方式处理。

自定义函数可以直接获取数据源,而不是通过常见的URL方式返回数据源。例如:

常见的属性

自定义标签的taglib

属性

描述

tlib-version

标签库的版本号

short-name

标签库默认的助记名称

uri

该标签库的 URI,相当于该标签库的唯一标识。JSP 页面中使用标签库时就是根据该URI 属性来定位标签库的

description

描述信息

display-name

显示的名称

自定义标签的tag

属性

描述

description

描述信息

name

唯一的标签名

tag-class

处理标签类的全路径,该类为javax.serlvet.jsp.tagext.JspTag的子类

body-content

指定标签体内容. tagdependent:标签体内容直接被写入BodyContent,由自定义标签类来进行处理,而不被JSP容器解释。例如:heihei。empty:空的标签体内容,即起始标记和结束标记之间没有内容。例如:。scriptless:支持静态 HTML 元素,表达式语言等,但不支持JSP语法。JSP:支持所有的JSP语法

description

描述信息

fragment

如果声明了该属性,属性值将被视为一个 JspFragment

自定义标签的attribute

属性

描述

name

定义属性的名称。每个标签的是属性名称必须是唯一的

required

指定属性是否是必须的或者可选的,如果设置为false为可选

rtexprvalue

声明在运行表达式时,标签属性是否有效

type

定义该属性的Java类类型 。默认指定为 String

description

描述信息

fragment

如果声明了该属性,属性值将被视为一个 JspFragment

*自定义标签函数的function

属性

描述

description

描述信息

name

唯一的函数名

function-class

包含静态方法的java类的全路径

function-signature

静态方法的声明

example

使用自定义函数的示例

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值