- 浏览: 130175 次
- 性别:
- 来自: 吉林
文章分类
- 全部博客 (118)
- oracle数据库 (5)
- Web前端 (3)
- java后台 (6)
- Java虚拟机 (3)
- 大数据 (1)
- Java (27)
- 微信公众号 (1)
- ssh框架 (2)
- Java,eclipse (1)
- Hibernate (4)
- SSH (4)
- asp.net (1)
- XML,JSON (1)
- junit (1)
- SpringMVC (2)
- XML (2)
- JSON (2)
- HTTP AJAX POST请求 (2)
- request payload (1)
- form data (1)
- Content Type (1)
- Spring RESTful (1)
- RESTful (2)
- Git (2)
- 企业软件版本管理工具 (1)
- HIVE,HADOOP (1)
- Hadoop (1)
- Dobbo (1)
- 缓存(cache) (1)
- 服务器端,客户端 (1)
- Cookie (1)
- Session (1)
- MySQL索引 (1)
- 乐观锁,悲观锁 (1)
- 电子商务 (1)
- 面试部分 (1)
- 分布式事务处理 (1)
- java详解 (1)
- commons (1)
- NoClassDefFoundErrorLogFactory (1)
- Spring (1)
- tomcat (3)
- Ubuntu (1)
- 虚拟机 (1)
- Intel Virtual Technology (1)
- SVN (4)
- Taglib (5)
- java unsigned类型 (1)
- fmt (1)
- HMAC (1)
- linux (13)
- mysql (2)
- FTP (4)
- Maven (5)
- spring boot (6)
- myeclipse (1)
- web (1)
- Https (2)
- ssl (3)
- crt (1)
- cer (1)
- byte (1)
- 字符占字节 (1)
- 限制IP远程登录 (1)
- 禁止某些 IP 访问 (1)
- iptables (1)
- linux私钥登陆 (1)
- windows (1)
- openSSH (2)
- 大牛博客地址 (1)
- Maven常见异常 (1)
- shell命令 (1)
- WebWork2,Spring MVC (1)
- LinuxSS (0)
- Bitvise SSH Client (1)
- -bash-4.1$ (1)
- Centos7 (1)
- MQTT (5)
- Mosquitto (3)
- Mosquittos (0)
- HAProxy (1)
- 集群 (0)
- 负载均衡 (1)
- moqutte (1)
- 多线程 (1)
- Queue (1)
- BlockingQueue (1)
- ConcurrentLinkedQueue (1)
- erlang (1)
- jersey (1)
最新评论
介绍了TagSupport和BodyTagSupport之后,在jsp2.0中也新增加了一个叫做SimpleTagSupport的类,该类是对于一些JSP页面中不包含scriptlet的自定标签需求,可以继承它来做制作标签处理类,而不用处理一些TagSupport、BodyTagSupport类别中回传值的问题,应付复杂的生命周期呼叫。尽管有了一些限制,对于简单的自订标签需求,使用SimpleTagSupport还是比较容易的,基本上,它是应用在您的JSP/Servlet程式作了良好分工,JSP网页中只有标签,没有scriptlet的情况,就很适合用SimpleTagSupport,它实作了SimpleTag介面,您只要重新定义doTag()方法就可以实作自订标签的处理,先来看以下几个简单的范例
由于我把3个例子写在同一个tld文件中,所以先把tld的文件先贴出来先:
tld如下:
无标签体代码如下:
利用getJspContext().getOut();然后输出一个简单的字符串。
带标签体代码:
由于SimpleTagSupport只支持两种格式,empty和scriptlet,如果使用scriptlet这的话就是把标签体包含的页面转换成字符形式输出
无标签体利用< jsp:attribute>动作标签实现:
遵循TagSupport的方式,每个所定义的属性名称都需要写setter方法,由于标签中<fragment>true</fragment>已经设置为true因此可以直接调用invoke方法把所包含的内容直接显示出来。
jsp页面如下:
注意:由于SimpleTagSupport一个类不能同时调用3种<tag>的内容所以必须分开独立的编写,否则会出现某个属性出现空指针异常.
后话:
看了上面3种后肯定会有人会问我这样写可不可以:
tld如下:
Java代码:
这样写看上去是正确的,但是的在实际运行的时候,jsp如下:
运行的时候会出现f传入的值不对,它要求是javax.servlet.jsp.tagext.JspFragment; 这个类的对象,传进去的只是一个string类型,所以会出现报错,而JspFragment是属于一个抽象类是不可以直接创建出来的,如果标签体中加入<jsp:attribute >这个也会出现错误,会出现找不到指定的attribute ,同理把<body-content>设为空的话也会出现这错误.所以目前来说只有当前那3种可用 .
由于我把3个例子写在同一个tld文件中,所以先把tld的文件先贴出来先:
tld如下:
<?xml version="1.0" encoding="utf-8"?> <taglib xmlns="http://java.sun.com/xml/ns/j2ee" 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"> <tlib-version>1.0</tlib-version> <short-name>simple</short-name> <uri></uri> <!-- 无标签体 --> <tag> <name>simplehello</name> <tag-class>org.lxh.taglib.SimpleTag</tag-class> <body-content>empty</body-content> </tag> <!-- 带标签体,但是不能使用jsp scriptless只能使用 empty 和tagdependent两种 --> <tag> <name>simpleforeach</name> <tag-class>org.lxh.taglib.SimpleTag1</tag-class> <body-content>tagdependent</body-content> </tag> <!-- 设定fragment 可以接受JspFragment标签体 --> <tag> <description>Simple Tag</description> <name>fragtest</name> <tag-class>org.lxh.taglib.SimpleTag2</tag-class> <body-content>empty</body-content> <attribute> <name>fragment</name> <required>true</required> <fragment>true</fragment> </attribute> </tag> </taglib>
无标签体代码如下:
package org.lxh.taglib; import java.io.IOException; import javax.servlet.jsp.JspException; import javax.servlet.jsp.JspWriter; import javax.servlet.jsp.tagext.SimpleTagSupport; public class SimpleTag extends SimpleTagSupport { @Override public void doTag() throws JspException, IOException { JspWriter out = getJspContext().getOut(); // 无标签体使用 out.println("helloworld"); } }
利用getJspContext().getOut();然后输出一个简单的字符串。
带标签体代码:
package org.lxh.taglib; import java.io.IOException; import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.JspFragment; import javax.servlet.jsp.tagext.SimpleTagSupport; public class SimpleTag1 extends SimpleTagSupport { @Override public void doTag() throws JspException, IOException { JspFragment frag = getJspBody(); frag.invoke(null); } }
由于SimpleTagSupport只支持两种格式,empty和scriptlet,如果使用scriptlet这的话就是把标签体包含的页面转换成字符形式输出
无标签体利用< jsp:attribute>动作标签实现:
package org.lxh.taglib; import java.io.IOException; import javax.servlet.jsp.JspException; import javax.servlet.jsp.JspWriter; import javax.servlet.jsp.tagext.JspFragment; import javax.servlet.jsp.tagext.SimpleTagSupport; public class SimpleTag2 extends SimpleTagSupport { private JspFragment fragment; public JspFragment getFragment() { return fragment; } public void setFragment(JspFragment fragment) { this.fragment = fragment; } @Override public void doTag() throws JspException, IOException { fragment.invoke(null); } }
遵循TagSupport的方式,每个所定义的属性名称都需要写setter方法,由于标签中<fragment>true</fragment>已经设置为true因此可以直接调用invoke方法把所包含的内容直接显示出来。
jsp页面如下:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@page import="java.util.*"%> <%@taglib prefix="simple" uri="/WEB-INF/tld/simple.tld"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <simple:simplehello /> <table> <simple:simpleforeach> <tr> <td>${hi }</td> </tr> </simple:simpleforeach> <simple:fragtest> <jsp:attribute name="fragment"> <tr> <td>${hi }1</td> </tr> </jsp:attribute> </simple:fragtest> </table> </body> </html>
注意:由于SimpleTagSupport一个类不能同时调用3种<tag>的内容所以必须分开独立的编写,否则会出现某个属性出现空指针异常.
后话:
看了上面3种后肯定会有人会问我这样写可不可以:
tld如下:
<tag> <description>Simple Tag</description> <name>fragtestx</name> <tag-class>org.lxh.taglib.SimpleTag3</tag-class> <body-content>tagdependent</body-content> <attribute> <name>fragment</name> <fragment>true</fragment> </attribute> </tag>
Java代码:
package org.lxh.taglib; import java.io.IOException; import javax.servlet.jsp.JspException; import javax.servlet.jsp.JspWriter; import javax.servlet.jsp.tagext.JspFragment; import javax.servlet.jsp.tagext.SimpleTagSupport; public class SimpleTag3 extends SimpleTagSupport { private JspFragment fragment; public JspFragment getFragment() { return fragment; } public void setFragment(JspFragment fragment) { this.fragment = fragment; } @Override public void doTag() throws JspException, IOException { JspFragment frag = getJspBody(); frag.invoke(null); fragment.invoke(null); } }
这样写看上去是正确的,但是的在实际运行的时候,jsp如下:
<simple:fragtestx fragment="f"> <jsp:attribute name="fragment"> <tr> <td>${hi }1</td> </tr> </jsp:attribute> </simple:fragtestx>
运行的时候会出现f传入的值不对,它要求是javax.servlet.jsp.tagext.JspFragment; 这个类的对象,传进去的只是一个string类型,所以会出现报错,而JspFragment是属于一个抽象类是不可以直接创建出来的,如果标签体中加入<jsp:attribute >这个也会出现错误,会出现找不到指定的attribute ,同理把<body-content>设为空的话也会出现这错误.所以目前来说只有当前那3种可用 .
发表评论
-
自定义JSP中的Taglib标签之四自定义标签中的Function函数
2017-01-05 14:25 432之前例子已经写好了,由于时间关系一直没有发布,这次带来的是关于 ... -
自定义JSP中的Taglib标签之三简单仿JSTL中带标签体的ForEach循环
2017-01-05 14:24 551上2篇文章分别了介绍了taglib的无属性状态和有带属性状态, ... -
自定义JSP中的Taglib标签之二带自定义属性的标签
2017-01-05 14:25 538上次介绍了简单的taglib自定义标签,发现单纯的无属性自定义 ... -
自定义JSP中的Taglib标签之一简单入门篇(无参数的自定义标签)
2017-01-05 14:18 428今天写了个简单的基于jsp2.0的自定义Taglib标签,JS ...
相关推荐
在Java服务器页面(JSP)开发中,自定义Taglib是一种强大的工具,它允许开发者创建可重用的自定义标签,以提高代码的可读性和可维护性。本文将深入讲解如何在JSP中实现自定义Taglib。 首先,我们来看自定义标签类的...
本文将深入探讨自定义JSP标签的创建与使用,以及它如何实现无刷新功能。 首先,理解JSP自定义标签的概念。自定义标签是开发者根据需求创建的,可以看作是预定义的HTML元素,它们扩展了JSP的功能,提供了更加灵活的...
自定义JSP标签是Java服务器页面(JSP)技术中的一种高级特性,它允许开发者创建自己的可...在实际项目中,结合使用自定义JSP标签和JavaServer Faces (JSF)、Spring MVC等框架,能够构建出高效、模块化的Web应用程序。
在`studyRemark`目录中,你可以找到详细的教程和示例代码,这些资源将帮助你更好地理解和实践自定义JSP标签的开发。通过实际操作,你会熟悉整个流程,包括创建TLD、编写处理类以及在JSP页面中使用它们。这种实践经验...
五、自定义JSP标签的优势 1. **可读性强**:自定义标签能以更接近自然语言的形式表达业务逻辑,提高代码可读性。 2. **代码复用**:封装常用功能,避免重复编写相似代码。 3. **松耦合**:将视图逻辑与业务逻辑分离...
4. **在JSP页面中使用**:通过`<%@ taglib %>`指令引入自定义标签库,并在页面中使用自定义标签。 ### 三、自定义标签的参数与属性 自定义标签的参数或属性是在标签定义时声明的,它们提供了向标签传递数据的方式...
五、自定义JSP标签与EL和JSTL的关系 自定义JSP标签可以与表达式语言(EL)和JavaServer Pages Standard Tag Library(JSTL)配合使用,进一步增强页面表现力。EL用于在页面中访问和操作数据,而JSTL提供了一组标准的...
本项目“Taglib自定义标签分页”提供了一个完整的解决方案,它实现了在网页上进行分页显示的功能,无需在每个JSP页面中重复编写分页代码,极大地提高了开发效率和代码复用性。 首先,我们需要了解自定义标签的基本...
5. **使用自定义标签**:在JSP页面中,通过`<%@ taglib %>`指令引入自定义标签库,然后就可以像使用HTML标签一样使用自定义标签了。 使用自定义标签的好处主要包括: - **代码分离**:自定义标签能够将业务逻辑与...
`readme.txt` 文件通常包含了一些使用说明或者开发过程中的注意事项,比如如何配置环境,使用标签的示例代码等。 总的来说,JSP自定义标签库允许开发者创建自己的标签,提高代码的可读性和可维护性。在这个案例中,...
3. **在JSP页面中使用自定义标签**:在JSP页面中,我们可以通过`<%@ taglib %>`指令引入TLD文件,然后像使用HTML标签一样使用自定义标签。例如: ```jsp <%@ taglib prefix="myTags" uri="/WEB-INF/mytags.tld" %> ...
4. **使用自定义标签**:在JSP页面中,通过`<%@ taglib %>`指令引入标签库,然后像使用内置标签一样使用自定义标签。标签的属性可以通过标签的属性值传递到Tag Handler类中。 5. **处理业务逻辑**:在Tag Handler类...
之后,在JSP页面中通过导入taglib指令来使用这个带属性的自定义标签,并通过count属性来控制输出内容的重复次数。 8. 注意事项:在创建自定义标签时需要注意,属性的数据类型必须是JSP容器能够自动转换的类型,否则...
在JSP页面中,我们可以这样使用自定义分页标签: ```jsp <%@ taglib prefix="mypagination" uri="/WEB-INF/tlds/pagination.tld" %> ${messageCount}" currentPage="${currentPage}" /> ``` 在这个例子中,`...
总结来说,自定义JSP分页标签是提高代码复用性,优化项目结构的有效手段。它允许开发者将复杂的业务逻辑封装在标签中,使得JSP页面更加清晰易读,同时降低了维护成本。在给定的压缩包中,包含的自定义标签文件可以...
"jsp自定义标签所需jar包"主要指的是在Java Web开发中,为了创建和使用自定义JSP标签,我们需要包含特定的库,如"javax.servlet.jsp-api-2.2.1-sources.jar",它提供了Servlet和JSP API的源代码。理解并配置这些依赖...
4. **在JSP页面中使用自定义标签**:最后在JSP页面中通过前缀加标签名的方式调用自定义标签。 #### 四、具体实现示例 根据给定的部分内容,我们可以进一步分析具体的实现细节: ##### 1. 配置`web.xml` ```xml ...