- 浏览: 576979 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (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 1190在Java集合中有一种特殊的Map类型:WeakHashMap ... -
java HashMap TreeMap(key顺序) LinkedHashMap(插入顺序)学习
2018-06-07 10:27 912java为数据结构中的映射定义了一个接口java.util.M ... -
html pre标签使用(保留空格和回车等操作)
2018-05-15 08:37 2387pre 元素可定义预格式化的文本。被包围在 pre 元素中的文 ... -
java RESTful 详解
2018-04-27 11:35 594(1)每一个URI代表一种资源,独一无二; (2)客户端 ... -
java 通过HttpsUrlConnection访问接口数据
2018-04-19 11:25 931server: ssl: key-stor ... -
java 使用多线程的场景总结
2018-04-10 14:35 1662在一个高并发的网站中,多线程是必不可少的。下面先说一下多线程在 ... -
java Enum枚举设置
2018-04-10 10:55 454/** * 数据状态:0:无效,1:有效 **/ ... -
java RestTemplate访问restful服务
2018-03-01 15:02 1574REST的基础知识 当谈论REST时,有一种常见的错误就是将其 ... -
缓存穿透(预设值防止多个进程读取数据库)、缓存并发、缓存失效(过期时间用随机数)学习
2018-02-22 14:25 411一、缓存穿透 我们在项 ... -
java FYOpenApi实现短信发送
2018-01-02 17:10 10881.配置文件 sms.OpenUrl = http://s ... -
java JSONObject序列化包含Date类型数据的Java对象
2017-12-26 16:31 1563如果Date.class无法进行转换则使用Timestamp. ... -
java 用HttpsURLConnection进行传递中文时错误总结
2017-12-07 16:42 607传递中文时需要用Writer而不是OutputStream ... -
java 内存泄漏
2017-11-27 13:51 4671.内存溢出 out of memory ... -
ActiveMQ 三种发送消息方式(同步,异步,单向)
2017-11-17 10:25 2316MQ 发送普通消息有三种实现方式:可靠同步发送、可靠异步发送、 ... -
web http协议学习
2017-11-15 15:15 489HTTP协议是web开发必须掌握的协议之一,文章的内容并没有按 ... -
java Guava ListenableFuture实现线程回调功能
2017-11-14 10:17 1753java Future具有局限性。在实际应用中,当需要下 ... -
java Curator实现分布式锁
2017-09-05 14:39 1062Curator实现分布式锁主要依赖于zookeeper ... -
java Guava工具集学习(强大)
2017-09-05 10:28 412import java.util.Iterator ... -
spring boot进行mybatis和JPA的整合
2017-08-30 10:12 4627初识spring boot Spring框架功能很强大,但是就 ... -
java CyclicBarrier进行并发编程
2017-08-25 15:44 634CyclicBarrier允许一组线程相互等待达到一个公共的障 ...
相关推荐
jsp自定义标签开发+TLD...从jsp1.1开始就可以在jsp页面中使用自定义标签了,使用自定义标签不但可以实现代码重用,而且可以使jsp代码更简洁。Jsp2.0的标签扩展API中又增加了SimpleTag接口和其实现类SimpleTagSupport。
在将JavaBean代码放入JSP 页面时这个库提供实质性的加强的功能以改善其性能,它由标签提供。 ·struts-logic标签库。这个库可管理有条件的文本生成,在对象集合中循环以重复生成输出文本和应用程序流程管理。 ·...
fmt.tld 标签 修改格式显示 标签 f
JSP自定义标签。在自定义标签的起始和结束标签之间的部分为标签体...标签处理程序必须实现或扩展javax.servlet.jsp.tagext包中的类和接口.javax.servlet.jsp.tagext含有允许标签处理程序类与JSP容器通信的接口和类。
JSTL标签所需要的tld文件,包括 c.tld、fmt.tld、fn.tld 三个 几乎所有的JSTL标签下载的zip中都只有一个c.tld,然后只讲解<C:>标签怎么用,其实<fmt:> <fn:>标签也非常好用和实用,找了好久才找到...
c.tld fn.tld fmt.tld x.tld jstl.jar JSTL tld标签及jar包
tld自定义标签,基础入门级demo,使用的是最基础的mvc架构运行,适合刚接触tld的程序员,附有详细说明,demo导入即可运行,看了之后仍不是很清楚的可查看该案例的博客
使用c标签必须要导入的包和文件,没有是不能用的哦,
此分页代码易懂使用方便效率高,并且外带一份使用说明
jsp开发所需要的几个tld文件,汇总了一下,留待备用