您的位置:首页 > 编程语言 > Java开发

深入体验JavaWeg开发内幕——使用传统自定义标签的实例应用

2012-11-21 00:53 726 查看
关于传统自定义标签也就是继承TagSupport类或者BodyTagSurpport类的标签处理类,下面我们来看一看开发传统标签的实例吧! 1. 控制jsp页面某一部分内容是否执行。2.控制整个jsp页面是否执行。3.控制jsp页面内容重复执行。4. 修改jsp页面内容输出。 这是标签库描述文件,以下不再过多赘述读者可自己查看。
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>
效果一
//忽略标签体public class ShowInnerLableContent extends TagSupport {@Overridepublic int doStartTag() throws JspException {//	此字段在doStartTag()中不适用,其作用是控制JSP页面中部分内容是否执行,也就是说无法实现对整个页面内容的限定return this.SKIP_BODY;}}//其他文件不做变化。

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>
//忽略标签体后的页面内容:public class ShowInnerLableContent1 extends TagSupport {@Overridepublic int doEndTag() throws JspException {// 该方法只是对自定义标签结束时调用,以判断该标签之后的内容是否显示return this.SKIP_PAGE;}}

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>

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>
好了关于传统的自定义标签到这里就介绍完了,后面将会为大家介绍简单标签的使用!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: