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

          关于传统自定义标签也就是继承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 { @Override public int doStartTag() throws JspException { // 此字段在doStartTag()中不适用,其作用是控制JSP页面中部分内容是否执行,也就是说无法实现对整个页面内容的限定 return this.SKIP_BODY; } } //其他文件不做变化。



2.控制整个jsp页面是否执行。


 //执行标签体后的页面内容 ShowInnerLableContent1.java public 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_PAGE This is my JSP page. <br> </lijizh:H1> aaaaaaaa<br/> </body> </html> 




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

[置顶] 深入体验JavaWeg开发内幕——使用传统自定义标签的实例应用_第1张图片

3.控制jsp页面内容重复执行。


 //重复执行 public class ShowInnerLableContent2 extends TagSupport { int i =0; @Override public int doStartTag() throws JspException { return this.EVAL_BODY_INCLUDE; } @Override public 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> 

[置顶] 深入体验JavaWeg开发内幕——使用传统自定义标签的实例应用_第2张图片
  

  4. 修改jsp页面内容输出。


将自定义标签体中的内容转成大写后输出

public class ShowInnerLableContent3 extends BodyTagSupport { @Override public 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> 


   好了关于传统的自定义标签到这里就介绍完了,后面将会为大家介绍简单标签的使用!

你可能感兴趣的:([置顶] 深入体验JavaWeg开发内幕——使用传统自定义标签的实例应用)