javaweb之自定义标签——简单标签库
来源:互联网 发布:淘宝代销物流怎么设置 编辑:程序博客网 时间:2024/05/16 01:37
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib uri="http://www.sitcast.com" prefix="sitcast" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <title>用简单标签控制是否执行标签体</title> </head> <body> <sitcast:demo1> aaaaa </sitcast:demo1> </body></html>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib uri="http://www.sitcast.com" prefix="sitcast" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <title>用简单标签迭代标签体</title> </head> <body> <sitcast:demo2> This is my JSP page. <br> </sitcast:demo2> </body></html>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib uri="http://www.sitcast.com" prefix="sitcast" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>用简单标签修改标签体</title> </head> <body> <sitcast:demo3> aaaaaa </sitcast:demo3> </body></html>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib uri="http://www.sitcast.com" prefix="sitcast" %><sitcast:demo4/><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>用简单标签控制标签余下JSP是否执行</title> </head> <body> aaaaaa </body></html>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib uri="http://www.sitcast.com" prefix="sitcast" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>开发带属性的标签</title> </head> <body> <%--这里date属性不能写成"1980-01-01" 因为服务器只支持8种基本类型的转换,需要用脚本表达式或者EL表达式给属性赋值 --%> <sitcast:demo5 count="9" date="<%=new Date() %>"> aaaaaa<br /> </sitcast:demo5> </body></html>
package cn.itcast.web.simpletag;import java.io.IOException;import javax.servlet.jsp.JspException;import javax.servlet.jsp.tagext.JspFragment;import javax.servlet.jsp.tagext.SimpleTagSupport;//控制标签体是否执行public class SimpleTagDemo1 extends SimpleTagSupport {@Overridepublic void doTag() throws JspException, IOException {/*让标签体执行//拿到标签体对象JspFragment jf = this.getJspBody();//调用标签体对象的输出方法,传给它一个流,代表输出到哪里去jf.invoke(this.getJspContext().getOut());*//* * 不让标签体执行,就不输出,或者什么都不写 */JspFragment jf = this.getJspBody();}}
package cn.itcast.web.simpletag;import java.io.IOException;import javax.servlet.jsp.JspException;import javax.servlet.jsp.tagext.JspFragment;import javax.servlet.jsp.tagext.SimpleTagSupport;//迭代标签体(控制JSP页面重复执行)//就是拿到标签体重复输出public class SimpleTagDemo2 extends SimpleTagSupport {@Overridepublic void doTag() throws JspException, IOException {JspFragment jf = this.getJspBody();for(int i=0;i<5;i++) {//jf.invoke(this.getJspContext().getOut());jf.invoke(null);//默认就是写给浏览器}}}
package cn.itcast.web.simpletag;import java.io.IOException;import java.io.StringWriter;import javax.servlet.jsp.JspException;import javax.servlet.jsp.tagext.JspFragment;import javax.servlet.jsp.tagext.SimpleTagSupport;//修改标签体//invoke到缓冲区修改后再输出public class SimpleTagDemo3 extends SimpleTagSupport {@Overridepublic void doTag() throws JspException, IOException {//拿到标签体JspFragment jf = this.getJspBody();//创建带有缓冲区的WriterStringWriter sw = new StringWriter();//invoke到缓冲区jf.invoke(sw);//拿出缓冲区数据String content = sw.toString();//修改缓冲区数据content = content.toUpperCase();//输出给浏览器this.getJspContext().getOut().write(content);}}
package cn.itcast.web.simpletag;import java.io.IOException;import java.io.StringWriter;import javax.servlet.jsp.JspException;import javax.servlet.jsp.SkipPageException;import javax.servlet.jsp.tagext.JspFragment;import javax.servlet.jsp.tagext.SimpleTagSupport;//控制标签余下jsp是否执行//抛出SkipPageException相当于返回了SKIP_PAGE,余下的JSP就不会执行了public class SimpleTagDemo4 extends SimpleTagSupport {@Overridepublic void doTag() throws JspException, IOException {throw new SkipPageException();}}
package cn.itcast.web.simpletag;import java.io.IOException;import java.util.Date;import javax.servlet.jsp.JspException;import javax.servlet.jsp.tagext.JspFragment;import javax.servlet.jsp.tagext.SimpleTagSupport;//开发带属性的标签//定义出属性和相应的set方法,属性值会自动传递进来,在doTag方法中直接用属性public class SimpleTagDemo5 extends SimpleTagSupport {//在给属性赋值的时候是字符串,设置属性的时候是int,服务器只支持8种基本类型的转换private int count;//在赋值8种基本类型以外的属性时,用脚本表达式赋值或者用EL表达式赋值private Date date;public void setDate(Date date) {this.date = date;}public void setCount(int count) {this.count = count;}@Overridepublic void doTag() throws JspException, IOException {JspFragment jf = this.getJspBody();this.getJspContext().getOut().write(date.toLocaleString() + "<br/>");for(int i=0;i<count;i++) {jf.invoke(null);}}}
<?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"> <description>A tag library exercising SimpleTag handlers.</description> <tlib-version>1.0</tlib-version> <short-name>sitcast</short-name><!-- 描述文件的名称 --> <uri>http://www.sitcast.com</uri><!-- 描述文件的uri --> <tag> <name>demo1</name> <tag-class>cn.itcast.web.simpletag.SimpleTagDemo1</tag-class> <!-- 简单标签有标签体,scriptless代表有标签体 ,为什么不是JSP了呢, 因为在JSP2.0以后sun公司不建议在JSP页面中写代码了,如果是JSP, 页面中可以写脚本代码scriptless(无脚本) --> <body-content>scriptless</body-content> </tag> <tag> <name>demo2</name> <tag-class>cn.itcast.web.simpletag.SimpleTagDemo2</tag-class> <body-content>scriptless</body-content> </tag> <tag> <name>demo3</name> <tag-class>cn.itcast.web.simpletag.SimpleTagDemo3</tag-class> <body-content>scriptless</body-content> </tag> <tag> <name>demo4</name> <tag-class>cn.itcast.web.simpletag.SimpleTagDemo4</tag-class> <body-content>empty</body-content><!-- 没有标签体用empty --> </tag> <tag> <name>demo5</name> <tag-class>cn.itcast.web.simpletag.SimpleTagDemo5</tag-class> <body-content>scriptless</body-content> <!-- 声明属性 --> <attribute> <name>count</name><!-- 属性名称 --> <required>true</required><!-- 属性是否必须 --> <!-- 运行时表达式的值,false的话在JSP页面中给属性赋值,只能是count="9"这种形式 true的话,可以是运行时的表达式,可以用脚本表达式给属性赋值<%= %>也可以使用EL表达式给属性赋值 --> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>date</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> </taglib>
具体文档查看上传资源中的自定义标签文档
0 0
- javaweb之自定义标签——简单标签库
- javaweb之自定义标签库——简单的foreach标签(对List迭代)
- javaweb之自定义标签——传统标签库
- javaweb之自定义标签库——防盗链标签
- javaweb之自定义标签库——if标签
- javaweb之自定义标签库——if else标签
- javaweb之自定义标签库——转义标签
- javaweb之自定义标签——带属性的标签
- javaWeb之自定义标签
- javaweb学习总结—jsp简单标签标签库开发
- JavaWeb学习篇之----自定义标签&&JSTL标签库详解
- JavaWeb学习篇之----自定义标签&&JSTL标签库详解
- JavaWeb学习篇之----自定义标签&&JSTL标签库详解
- JavaWeb学习篇之----自定义标签&&JSTL标签库详解
- JavaWeb学习篇之----自定义标签&&JSTL标签库详解
- JavaWeb之JSP自定义标签
- JavaWeb之 JSP:自定义标签
- JavaWeb-自定义标签、传统标签和简单标签
- 跟我一起写 Makefile(一)
- android 多屏幕支持
- Android 的定向广播 局部广播
- UVa 489 - Hangman Judge
- delete和delete[]的区别
- javaweb之自定义标签——简单标签库
- Hadoop权限管理(转)
- C++ 模板设计 policy和traits
- 8086 CPU 寄存器简介
- Java中堆和栈的区别
- Portal与db2数据库迁移过程
- 泛型编程与STL学习-iterators
- Android之开发性能优化简介
- linux - yum 安装配置mysql可以远程连接