深入体验JavaWeg开发内幕——使用传统自定义标签的实例应用
2012-11-21 00:53
726 查看
关于传统自定义标签也就是继承TagSupport类或者BodyTagSurpport类的标签处理类,下面我们来看一看开发传统标签的实例吧! 1. 控制jsp页面某一部分内容是否执行。2.控制整个jsp页面是否执行。3.控制jsp页面内容重复执行。4. 修改jsp页面内容输出。 这是标签库描述文件,以下不再过多赘述读者可自己查看。![](http://img.my.csdn.net/uploads/201211/21/1353429645_6277.png)
![](http://img.my.csdn.net/uploads/201211/21/1353429830_3773.png)
![](http://img.my.csdn.net/uploads/201211/21/1353429830_3773.png)
![](http://img.my.csdn.net/uploads/201211/21/1353430052_6904.png)
![](http://img.my.csdn.net/uploads/201211/21/1353430162_9132.png)
好了关于传统的自定义标签到这里就介绍完了,后面将会为大家介绍简单标签的使用!
lijizh.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"> <description>A tag library exercising SimpleTag handlers.</description> <tlib-version>1.0</tlib-version> <short-name>lijizh</short-name> <uri>http://www.hbsi.com</uri> <tag> <description>Outputs Hello, World</description> <name>lijizh</name> <tag-class>www.hbsi.web.tag.CustomTagIP</tag-class> <body-content>empty</body-content> </tag> <tag> <description>show1</description> <name>H</name> <tag-class>www.hbsi.web.tag.ShowInnerLableContent</tag-class> <body-content>JSP</body-content> </tag> <tag> <description>show2</description> <name>H1</name> <tag-class>www.hbsi.web.tag.ShowInnerLableContent1</tag-class> <body-content>JSP</body-content> </tag> <tag> <description>show3</description> <name>H2</name> <tag-class>www.hbsi.web.tag.ShowInnerLableContent2</tag-class> <body-content>JSP</body-content> </tag> <tag> <description>show4</description> <name>H3</name> <tag-class>www.hbsi.web.tag.ShowInnerLableContent3</tag-class> <body-content>JSP</body-content> </tag> </taglib>
1. 控制jsp页面某一部分内容是否执行。
执行标签体ShowInnerLableContent.java public class ShowInnerLableContent extends TagSupport { @Overridepublic int doStartTag() throws JspException { //此字段在doStartTag()中不适用,其作用是控制JSP页面中部分内容是否执行,也就是说无法实现对整个页面内容的限定return this.EVAL_BODY_INCLUDE;} } show1.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="http://www.hbsi.com" prefix="lijizh" %> <html> </head> <body> <lijizh:H> SKIP_BODY This is my JSP page. <br> </lijizh:H> aaaaaaaa<br/> </body> </html>效果一
![](http://img.my.csdn.net/uploads/201211/21/1353429645_6277.png)
//忽略标签体public class ShowInnerLableContent extends TagSupport {@Overridepublic int doStartTag() throws JspException {// 此字段在doStartTag()中不适用,其作用是控制JSP页面中部分内容是否执行,也就是说无法实现对整个页面内容的限定return this.SKIP_BODY;}}//其他文件不做变化。
![](http://img.my.csdn.net/uploads/201211/21/1353429830_3773.png)
2.控制整个jsp页面是否执行。
//执行标签体后的页面内容ShowInnerLableContent1.javapublic class ShowInnerLableContent1 extends TagSupport {@Overridepublic int doEndTag() throws JspException {// 该方法只是对自定义标签结束时调用,以判断该标签之后的内容是否显示return this.EVAL_PAGE;}}<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib uri="http://www.hbsi.com" prefix="lijizh" %><html><head><base href="<%=basePath%>"><title>My JSP 'show1.jsp' starting page</title></head><body><lijizh:H1>SKIP_PAGEThis is my JSP page. <br></lijizh:H1>aaaaaaaa<br/></body></html>
![](http://img.my.csdn.net/uploads/201211/21/1353429830_3773.png)
//忽略标签体后的页面内容:public class ShowInnerLableContent1 extends TagSupport {@Overridepublic int doEndTag() throws JspException {// 该方法只是对自定义标签结束时调用,以判断该标签之后的内容是否显示return this.SKIP_PAGE;}}
![](http://img.my.csdn.net/uploads/201211/21/1353430052_6904.png)
3.控制jsp页面内容重复执行。
//重复执行public class ShowInnerLableContent2 extends TagSupport {int i =0;@Overridepublic int doStartTag() throws JspException {return this.EVAL_BODY_INCLUDE;}@Overridepublic int doAfterBody() throws JspException {// 由于在该方调用之前先调用doStartTag()方法,而doStartTag()方法的默认返回值为SKIP_BODY;// 所以应该重写doStartTag()方法将其返回值设置为EVAL_BODY_INCLUDE;另外还需要为自定义标签// 体定义属性告知其显示循环显示次数或给doAfterBody()方法定义循环次数才可起作用否则该方法// 不会去执行i++;if(i<=3){return this.EVAL_BODY_AGAIN;}else{return this.SKIP_BODY;}}}
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib uri="http://www.hbsi.com" prefix="lijizh" %><html><head><title>My JSP 'show1.jsp' starting page</title></head><body><lijizh:H2>show3EVAL_BODY_AGAIN<br/>This is my JSP page. <br></lijizh:H2>aaaaaaaa<br/>bb<br/></body></html>
![](http://img.my.csdn.net/uploads/201211/21/1353430162_9132.png)
4. 修改jsp页面内容输出。
将自定义标签体中的内容转成大写后输出public class ShowInnerLableContent3 extends BodyTagSupport {@Overridepublic int doEndTag() throws JspException {// 此方法用于在继承了BodyTagSupport 类的ShowInnerLableContent3中// 用于修改自定义标签中的内容,根据其返回值可确定是否显示标签后面的// page内容BodyContent bc = this.getBodyContent();String content = bc.getString();String upperCase = content.toUpperCase();JspWriter out = this.pageContext.getOut();try {out.print(upperCase);} catch (IOException e) {throw new RuntimeException(e);}return this.EVAL_PAGE;}}
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib uri="http://www.hbsi.com" prefix="lijizh" %><html><head><title>My JSP 'show1.jsp' starting page</title></head><body>show4toUppercase<br/><lijizh:H3>touppercase! <br></lijizh:H3></body></html>
![](http://img.my.csdn.net/uploads/201211/21/1353430481_9295.png)
相关文章推荐
- 深入体验Java Web开发内幕--使用Tomcat Manger管理应用
- 深入感受JavaWeb开发内幕——使用Request对象设置防盗链
- 深入体验Java Web开发内幕-核心基础(看张孝祥的书的笔记一)
- 《深入体验java web 开发内幕》-1
- 【书籍推荐】深入体验Java Web开发内幕——核心基础
- 深入体验Java Web开发内幕-- HTTP协议
- 深入体验JavaWeb开发内幕之Response对象
- 《深入体验 飞鸽传书 开发内幕 核心基础》
- JAVAWEB开发之JSTL标签库的使用、 自定义EL函数、自定义标签(带属性的、带标签体的)
- JDK 1.5 使用java.util.concurrent 开发并发应用
- 使用 JAX-RS 简化 REST 应用开发 实例
- 使用JAVA开发CORBA应用
- Java设计模式开发中使用观察者模式的实例教程
- Xamarin体验:使用C#开发iOS/Android应用
- java图像界面开发简单实例-ImageIO、JFileChooser、JMenu、JPanel的应用
- 使用 Spring Shell 开发 Java 命令行应用
- CMS内容管理系统开发- Java Web开发及发布实例(2)—使用JSP实现动态数据交互
- Spark排序算法!! 使用java开发 自定义key值 进行二次排序 深入解析!
- 通过实例深入学习Java的Struts框架中的OGNL表达式使用
- 传统mvc开发中在Servlet或普通java类中使用ehcache缓存