EE JSP:使用自定义标签库生成动态内容

在Web应用程序中开发View层时,您希望尽量不要重复JSP文件中的内容。 JSP spec API允许您通过使用标记库来减少这种重复。 定制JSP标记是用户定义的xml标记元素,您可以将其插入JSP文件以替换为某些动态内容。

这是一个使用自定义JSP标记的简单jsp示例 ,该标记插入服务器时间戳记值:

<%@ taglib prefix="myapp" tagdir="/WEB-INF/myappTags" %>
<!DOCTYPE html>
<html>
    <body>
        <h1>Hello World!</h1>
        <p>Page served on <myapp:serverTime pattern="yyyy-MM-dd HH:mm:ss"/></p>
    </body>
</html>

JSP标记还可以允许您将参数作为标记的属性传递。 在上面的示例中, <myapp:serverTime>标记使用自定义pattern属性来控制日期字符串的格式。

JSP标签也可以与子标签或任何HTML内容元素嵌套在一起。 嵌套的JSP标记可以为您提供一种有条件地呈现封闭内容的方法。 由于XML结构的缘故,使用标记来呈现条件内容更为冗长,但它消除了在JSP中使用直接Scriptlet代码的麻烦。

有两种创建自定义JSP标记的方法。 第一种方法是使用纯Java代码实现标签,然后将其注册到XML taglib定义文件中。 我现在将略过此方法,并向您展示另一种更简单的方法。

第二种方法使用类似于JSP页面的“标记文件”来构造标记(请记住,JSP标记只不过是某些内容的占位符!)。 我将向您展示上面示例的第二种方法。 首先在src/main/webapp/WEB-INF/tags/myapp项目文件夹下创建一个serverTime.tag文件。

<%@ attribute name="pattern" required="true" %>
<%@ tag import="java.util.Date, java.text.SimpleDateFormat" %>
<%= new SimpleDateFormat(pattern).format(new Date()) %>

标记文件的实现取决于文件命名和位置的简单约定。 请注意, src/main/webapp/WEB-INF/tags目录是必需的路径。 在此文件夹中,您可以创建要组织标记文件的任何子文件夹。 在我们的例子中,它是myapp目录。 标记文件可以与您通常创建的任何JSP文件一样,除了标记指令几乎没有什么不同。 您可以查看JSP规范以获取它们的完整列表。 无论您从标签文件中输出什么,它将被插入并替换标签的调用者。 请注意,我如何使用pattern属性参数来允许用户更改日期模式,它可以在Scriptlet Java代码内的标记文件中作为变量使用。

由于您可以像使用JSP一样编写标记文件,因此我再次警告即使在标记文件内部也过度使用Java代码Scriptlet。 如果必须调用Java代码,请尝试将代码包装并用单行调用替换,或使用纯Java代码编写Tag实现; 特别是如果您涉及非常复杂的业务逻辑。 这将使调试和维护代码变得更加容易。

JSP标记提供了一种在Web应用程序中构造View层的强大方法。 它可以帮助您重用代码或内容,并生成特定的响应。

翻译自: https://www.javacodegeeks.com/2015/02/ee-jsp-generating-dynamic-content-with-custom-tag-libraries.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值