JSP基础-自定义标签
来源:互联网 发布:淘宝怎么发链接充话费 编辑:程序博客网 时间:2024/06/06 11:48
作用:虽然JSTL标准标签库提供了很多通用标签,但实际开发需求复杂多变,这些通用标签是不能完全在JSP页面替代java代码,因此需要我们自定义标签来替代java代码!
1.传统标签
1).原理
Tag接口 |---IterationTag接口 |---TagSupport类-- |---BodyTag接口 | BodyTagSupprot类Tag生命周期:第一次使用时创建实例,从此驻留内存重复利用,每次都会依次执行:setPageContext(PageContext pc) 传入jsp对象setParent(Tag t) 传入父标签doStartTag() 通过返回值来控制标签体是否执行doEndTag() 通过返回值控制标签后jsp页面是否执行release() 服务器停止前调用销毁对象
2).自定义步骤:
1).编写一个类实现Tag接口2).编写一个tld文件描述Tag类3).在jsp页面中引入tld文件传统标签自定义相当繁琐,需分析开始标签和结束标签时,还需分析返回标签体控制程序,一般不推荐使用,简单标签SimpleTag更方便开发!
2.简单标签
1).原理
SimpleTag接口 |---SimpleTagSupport实现类SimpleTag生命周期:每次访问标签时都创建简单标签对象,用完即销毁。setJspContext(JspContext pc) 传入当前jsp的PageContext对象setParent(JspTag parent) 若标签有父标签,则调用传入setXXX() 若标签有属性,则调用传入setJspBody(JspFragment jspBody) 若标签有标签体,则调用传入doTag() 处理标签替代的java代码
2).自定义步骤
1).编写一个类继承SimpleTagSupport,覆盖doTag(),调用getJspContext/getJspBody获取JSP内容;public class MyTag extends SimpleTagSupport { @Override public void doTag(){ // 标签体重复输出 for(int i=0;i<attr;i++) getJspBody().invoke(null); /* // 默认会执行标签后续JSP页面 // 抛出SkipPageException异常,不执行后续JSP页面 throw new SkipPageException(); // 获取标签体 StringWriter writer = new StringWriter(); getJspBody().invoke(writer); String str = writer.toString(); // 修改后输出 getJspContext().getOut().write(str.toUpperCase()); */ } // 自定义标签属性attr private int attr; public void setAttr(int attr) { this.attr = attr; }}2).在WEB-INF目录下编写一个tld文件,描述自定义SimpleTag类;<?xml version="1.0" encoding="UTF-8"?><taglib version="2.0" 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"> <tlib-version>1.0</tlib-version> <short-name>MyTag</short-name> <uri>http://www.xxx.com/MyTag</uri> <tag> <name>myTag</name> 标签名 <tag-class>com.xx.MyTag</tag-class> 标签处理类 <body-content>scriptless/empty</body-content> scriptless不能含Java脚本代码 empty代表只能为空 tagdependent不会输出到浏览器 JSP代表任意内容,不能在简单标签使用,只能在传统标签使用 <attribute> 声明属性 <name>attr</name> 属性名 <required>true</required> 是否为必须存在 <rtexprvalue>true</rtexprvalue> 是否支持EL表达式 <type>int</type> 属性java类型 </attribute> </tag></taglib> 3).在jsp页面中引入tld文件,使用自定义标签 <%@ taglib uri="http://www.xxx.com/MyTag" prefix="MyTag"%> <MyTag:myTag attr="10">循环输出文本</MyTag:myTag>
GitHub博客:http://lioil.win/2017/01/23/JSP-MyTag.html
Coding博客:http://c.lioil.win/2017/01/23/JSP-MyTag.html
0 0
- JSP自定义标签基础
- JSP基础-自定义标签
- JSP自定义标签学习(基础)
- JSP自定义标签学习(基础)
- JSP自定义标签学习(基础)
- JSP自定义标签学习(基础)
- Web基础之自定义JSP标签
- J2EE基础:JSP中自定义标签的详细讲解
- JSP/Servlet基础——自定义标签库
- 【Java.Web】JSP —— 标签库taglib —— 自定义JSP标签 —— 基础
- JSP----自定义标签---简单标签
- jsp自定义标签-----嵌套标签
- JSP标签编程----自定义标签
- JSP 自定义标签:简单标签
- JSP标签-JSTL-自定义标签
- JSP自定义标签-Select标签
- jsp 自定义标签---标签文件
- JSP自定义标签
- iOS逆向工程基本概念
- 高级java工程师面试题
- C++ WINDOWS下 wchar_t *和char * 相互转化总结篇
- spring定时任务
- 加班潜规则
- JSP基础-自定义标签
- java并发编程(十七)----(线程池)java线程池架构和原理
- tomcat是如何处理请求的
- mongodb可视化工具破解
- Flutter进阶—质感设计之进度条
- 微信小程序开发入门
- 一起来搞机3:搭建SS服务器
- • Spring Boot 进 阶- 数 据 访 问-使用spring-data-jpa 操作数据库
- 第一篇博客