- 浏览: 599241 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (669)
- oracle (36)
- java (98)
- spring (48)
- UML (2)
- hibernate (10)
- tomcat (7)
- 高性能 (11)
- mysql (25)
- sql (19)
- web (42)
- 数据库设计 (4)
- Nio (6)
- Netty (8)
- Excel (3)
- File (4)
- AOP (1)
- Jetty (1)
- Log4J (4)
- 链表 (1)
- Spring Junit4 (3)
- Autowired Resource (0)
- Jackson (1)
- Javascript (58)
- Spring Cache (2)
- Spring - CXF (2)
- Spring Inject (2)
- 汉字拼音 (3)
- 代理模式 (3)
- Spring事务 (4)
- ActiveMQ (6)
- XML (3)
- Cglib (2)
- Activiti (15)
- 附件问题 (1)
- javaMail (1)
- Thread (19)
- 算法 (6)
- 正则表达式 (3)
- 国际化 (2)
- Json (3)
- EJB (3)
- Struts2 (1)
- Maven (7)
- Mybatis (7)
- Redis (8)
- DWR (1)
- Lucene (2)
- Linux (73)
- 杂谈 (2)
- CSS (13)
- Linux服务篇 (3)
- Kettle (9)
- android (81)
- protocol (2)
- EasyUI (6)
- nginx (2)
- zookeeper (6)
- Hadoop (41)
- cache (7)
- shiro (3)
- HBase (12)
- Hive (8)
- Spark (15)
- Scala (16)
- YARN (3)
- Kafka (5)
- Sqoop (2)
- Pig (3)
- Vue (6)
- sprint boot (19)
- dubbo (2)
- mongodb (2)
最新评论
1.xxx-tags.tld(关联具体的tag类)
放在WEB-INF目录下
2.xxx.tag.ButtonTag
BaseTag
BaseTag比较重要的方法是doEndTag进行用户是否有权限显示对应的tag
3.页面引用
1.BodyTagSupport主要是标签处理类需要与标签体交互时使用
2.BodyTagSupport三个重要方法
doStartTag(),doEndTag(),doAfterBody(),
doStartTag()方法是遇到标签开始时会呼叫的方法,其合法的返回值是EVAL_BODY_INCLUDE与SKIP_BODY,前者表示将显示标签间的文字,后者表示不显示标签间的文字;
doEndTag()方法是在遇到标签结束时呼叫的方法,其合法的返回值是EVAL_PAGE与 SKIP_PAGE,前者表示处理完标签后继续执行以下的JSP网页,后者是表示不处理接下来的JSP网页
doAfterBody()这个方法是在显示完标签间文字之后呼叫的,其返回值有EVAL_BODY_AGAIN与SKIP_BODY,前者会再显示一次标签间的文字,后者则继续执行标签处理的下一步。
放在WEB-INF目录下
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd"> <taglib> <tlib-version>2.2.3</tlib-version> <jsp-version>1.2</jsp-version> <short-name>tms</short-name> <uri>/xxxx-tags</uri> <display-name>"Struts Tags"</display-name> <description><![CDATA["To make it easier to access dynamic data; the Apache Struts framework includes a library of custom tags. The tags interact with the framework's validation and internationalization features; to ensure that input is correct and output is localized. The Struts Tags can be used with JSP FreeMarker or Velocity."]]></description> <tag> <name>button</name> <tag-class>xxx.tag.ButtonTag</tag-class> <body-content>JSP</body-content> <description><![CDATA[Render a HTML href element that when clicked can optionally call a URL via remote XMLHttpRequest and updates its targets]]></description> <attribute> <name>code</name> <required>true</required> <rtexprvalue>false</rtexprvalue> <description><![CDATA[Set the html accesskey attribute on rendered html element]]></description> </attribute> <attribute> <name>xxId</name> <required>false</required> <rtexprvalue>false</rtexprvalue> <description><![CDATA[Set the html accesskey attribute on rendered html element]]></description> </attribute> <attribute> <name>xxOnclick</name> <required>false</required> <rtexprvalue>false</rtexprvalue> <description><![CDATA[Set the html accesskey attribute on rendered html element]]></description> </attribute> <attribute> <name>xxType</name> <required>false</required> <rtexprvalue>false</rtexprvalue> <description><![CDATA[Set the html accesskey attribute on rendered html element]]></description> </attribute> <attribute> <name>xxClass</name> <required>false</required> <rtexprvalue>false</rtexprvalue> <description><![CDATA[Set the html accesskey attribute on rendered html element]]></description> </attribute> <attribute> <name>xxValue</name> <required>false</required> <rtexprvalue>false</rtexprvalue> <description><![CDATA[Set the html accesskey attribute on rendered html element]]></description> </attribute> </tag> </taglib>
2.xxx.tag.ButtonTag
public class ButtonTag extends BaseTag { private static final long serialVersionUID = 1L; private String xxValue; public String getXxValue() { return xxValue; } public void setXxValue(String xxValue) { this.xxValue = xxValue; } public String getHtml(){ StringBuffer sb=new StringBuffer(); String body=this.bodyContent.getString(); sb.append("<button "); if(SysUtils.isNotEmpty(xxValue)){ sb.append(" value=").append(xxValue); } sb.append(">"); sb.append(body); sb.append("</button>"); return sb.toString(); } }
BaseTag
BaseTag比较重要的方法是doEndTag进行用户是否有权限显示对应的tag
public abstract class BaseTag extends BodyTagSupport { private String workCode; //其他标签类实现该方法 protected abstract String getHtml(); public String getWorkCode() { return workCode; } public void setWorkCode(String workCode) { this.workCode = workCode; } private static final long serialVersionUID = 1L; //控制的关键 @Override public int doEndTag() throws JspException { String autcode=getAutcodeByWorkCode(); JSONObject user = (JSONObject)ServletActionContext.getRequest().getSession().getAttribute("USER_INFO"); String[] auth = (String[])ServletActionContext.getRequest().getSession().getAttribute("USER_AUTH"); if(user == null){ return EVAL_PAGE; } if(autcode == null){ try { pageContext.getOut().write(getHtml()); } catch (IOException e) { e.printStackTrace(); } }else{ if(auth != null){ if(SysUtils.hasAuth(auth,workCode)){ try { // 这句话是显示的关键 pageContext.getOut().write(getHtml()); } catch (IOException e) { e.printStackTrace(); } } } } return EVAL_PAGE; } }
3.页面引用
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib uri="/xxxx-tags" prefix="cbm"%> //对应tag文件中的uri内容 <cbm:button xxId="xx" code="权限码" xxType="button" xxClass="btn ">xx</cbm:button> //权限的控制主要是与code进行交互
1.BodyTagSupport主要是标签处理类需要与标签体交互时使用
2.BodyTagSupport三个重要方法
doStartTag(),doEndTag(),doAfterBody(),
doStartTag()方法是遇到标签开始时会呼叫的方法,其合法的返回值是EVAL_BODY_INCLUDE与SKIP_BODY,前者表示将显示标签间的文字,后者表示不显示标签间的文字;
doEndTag()方法是在遇到标签结束时呼叫的方法,其合法的返回值是EVAL_PAGE与 SKIP_PAGE,前者表示处理完标签后继续执行以下的JSP网页,后者是表示不处理接下来的JSP网页
doAfterBody()这个方法是在显示完标签间文字之后呼叫的,其返回值有EVAL_BODY_AGAIN与SKIP_BODY,前者会再显示一次标签间的文字,后者则继续执行标签处理的下一步。
发表评论
文章已被作者锁定,不允许评论。
-
java WeakHashMap学习(key是弱引用)
2018-06-21 09:31 1232在Java集合中有一种特殊的Map类型:WeakHashMap ... -
java HashMap TreeMap(key顺序) LinkedHashMap(插入顺序)学习
2018-06-07 10:27 951java为数据结构中的映射定义了一个接口java.util.M ... -
html pre标签使用(保留空格和回车等操作)
2018-05-15 08:37 2442pre 元素可定义预格式化的文本。被包围在 pre 元素中的文 ... -
java RESTful 详解
2018-04-27 11:35 643(1)每一个URI代表一种资源,独一无二; (2)客户端 ... -
java 通过HttpsUrlConnection访问接口数据
2018-04-19 11:25 988server: ssl: key-stor ... -
java 使用多线程的场景总结
2018-04-10 14:35 1704在一个高并发的网站中,多线程是必不可少的。下面先说一下多线程在 ... -
java Enum枚举设置
2018-04-10 10:55 480/** * 数据状态:0:无效,1:有效 **/ ... -
java RestTemplate访问restful服务
2018-03-01 15:02 1621REST的基础知识 当谈论REST时,有一种常见的错误就是将其 ... -
缓存穿透(预设值防止多个进程读取数据库)、缓存并发、缓存失效(过期时间用随机数)学习
2018-02-22 14:25 434一、缓存穿透 我们在项 ... -
java FYOpenApi实现短信发送
2018-01-02 17:10 11741.配置文件 sms.OpenUrl = http://s ... -
java JSONObject序列化包含Date类型数据的Java对象
2017-12-26 16:31 1617如果Date.class无法进行转换则使用Timestamp. ... -
java 用HttpsURLConnection进行传递中文时错误总结
2017-12-07 16:42 654传递中文时需要用Writer而不是OutputStream ... -
java 内存泄漏
2017-11-27 13:51 4951.内存溢出 out of memory ... -
ActiveMQ 三种发送消息方式(同步,异步,单向)
2017-11-17 10:25 2453MQ 发送普通消息有三种实现方式:可靠同步发送、可靠异步发送、 ... -
web http协议学习
2017-11-15 15:15 514HTTP协议是web开发必须掌握的协议之一,文章的内容并没有按 ... -
java Guava ListenableFuture实现线程回调功能
2017-11-14 10:17 1775java Future具有局限性。在实际应用中,当需要下 ... -
java Curator实现分布式锁
2017-09-05 14:39 1090Curator实现分布式锁主要依赖于zookeeper ... -
java Guava工具集学习(强大)
2017-09-05 10:28 432import java.util.Iterator ... -
spring boot进行mybatis和JPA的整合
2017-08-30 10:12 4683初识spring boot Spring框架功能很强大,但是就 ... -
java CyclicBarrier进行并发编程
2017-08-25 15:44 673CyclicBarrier允许一组线程相互等待达到一个公共的障 ...
相关推荐
本项目结合了Java、Hibernate、JSP以及TLD(Tag Library Descriptor)技术,实现了一个高效、易懂且实用的自定义标签分页解决方案。下面我们将详细探讨这些技术以及它们在分页中的应用。 首先,Java作为后端编程...
1. **创建标签处理类**:这个类需要实现JSP提供的特定接口,如`Tag`(适用于传统标签)或`SimpleTag`(适用于简化标签)。对于`SimpleTagSupport`,我们只需覆盖`doTag()`方法来实现标签的逻辑。 2. **定义TLD文件*...
通过定义TLD,创建处理类,然后在JSP页面中使用,开发者可以构建出自己的标签库,从而提高开发效率和代码质量。在给定的实例中,我们可以看到一个简单的自定义标签的实现和使用过程,涵盖了JSP自定义标签的基本流程...
通过在JSP页面中引入TLD文件,开发者可以在页面中使用自定义标签,简化视图层的编写。 在压缩包文件中,`make-Java-tld.fbr`可能是一个编译或构建自定义TLD标签库的工程文件,通常包含源代码、配置文件和编译脚本。...
在Java Web开发中,TLD(Tag Library Descriptor)文件是用于定义自定义JSP标签库的关键组件。TLD文件提供了一种方式,让开发者能够创建自己的标签,这些标签可以简化代码,提高可读性和可维护性。这个"tld自定义...
TLD 文件是XML文档,用于定义自定义标签库,它描述了JSP页面中可使用的自定义标签及其行为。下面将详细阐述TLD文件以及与之相关的几个关键知识点。 1. **什么是TLD文件?** TLD文件是JSP标准标签库(JSTL)的一...
同时,由于业务逻辑被封装在标签处理类中,而不是直接写在JSP页面上,这样就降低了视图层和控制器层的耦合度,提高了代码的可测试性和可重用性。 在实际开发中,自定义标签库还可以结合EL(Expression Language)和...
Java TLD(Tag Library Descriptor)标签打包是一种在Java Web开发中常见的操作,它涉及到JSP标准标签库(JSTL)以及自定义标签库的创建和整合。在本例中,压缩包包含了c标签、ec标签和logic标签,这些都是用于增强...
2. **实现标签类**:接下来,创建一个实现`MyTag`接口和`BodyTagSupport`类的类。在这个类中,你需要覆盖`doStartTag()`和`doEndTag()`方法,以及可能需要的其他方法,如`release()`来清理资源。例如: ```java ...
标签处理类负责处理标签逻辑,TLD文件描述了标签的元数据,如标签名称、属性、事件等,而导入声明则将标签库引入到JSP页面。 2.3 如何创建自定义标签 创建自定义标签需要编写处理类,继承自`javax.servlet.jsp....
在`jsptag03`这个压缩包中,可能包含了示例的TLD文件、标签处理类源码以及展示如何在JSP页面中使用这些标签的实例。这些资源可以帮助开发者更好地理解自定义标签的工作原理和实践方法。 总的来说,JSP自定义标签...
在Java Web开发中,JSTL(JavaServer Pages Standard Tag Library)是一个标准的标签库,它为JSP页面提供了一套强大的、可扩展的标签,用于处理常见的任务,如迭代、条件判断、国际化、XML处理等。JSTL的核心在于其...
例如,在JSP页面中,我们可以通过嵌套标签来封装一系列操作,实现如条件判断、循环、数据处理等复杂的逻辑功能。 #### 二、自定义嵌套标签的创建流程 1. **编写标签处理器类**:自定义嵌套标签的核心在于其标签...
权限标签的设计是Web开发中的一个重要概念,主要用于实现动态控制用户界面元素的可见性或可操作性,基于用户的权限。在给定的示例中,我们看到一个自定义JSP标签`<privilege:enable>`的实现,它根据特定的操作ID...
JSTL,全称为JavaServer Pages ...总的来说,理解和掌握JSTL以及其TLD文件对于任何Java Web开发者来说都是至关重要的,它可以帮助我们编写出更加优雅、高效的JSP页面,同时也有助于提升整个项目的可维护性和可扩展性。
首先,自定义标签的实现基于Java的`TagSupport`或`BodyTagSupport`类。`TagSupport`适用于无内容体的简单标签,而`BodyTagSupport`则适用于包含内容体的标签,即标签内部可以包含HTML或其他JSP元素。在这个场景下,...
总结来说,自定义JSP标签通过编写标记处理类和标记描述文件实现。标记处理类负责处理标签的逻辑,而TLD文件提供了元数据,将自定义标签与处理类关联起来。这个过程使得开发者可以创建具有特定功能的可重用组件,增强...
1. 编写一个实现 Tag 接口的 Java 类,把页面 Java 代码移到这个 Java 类中(标签处理器类)。 2. 编写标签库描述符(TLD)文件,在 TLD 文件中把标签处理器类描述成一个标签。 自定义标签库的原理 自定义标签库的...
在Java Web开发中,TLD(Tag Library Descriptor)文件是一种用于定义自定义JSP标签的XML文件。TLD文件描述了标签库中的每个自定义标签的功能、属性、返回类型等元数据,使得开发者可以创建自己的标签库来扩展JSP...