BodyTagSupport的执行顺序介绍

原创 2007年09月15日 14:43:00

package servlet;
import javax.servlet.jsp.tagext.*;
import java.util.Date;
import java.io.*;
import java.io.EOFException;
import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.JspWriter;
public class HelloTag extends BodyTagSupport {
 int counts;
 private int EVAL_PAGE_AGAIN;
// public void doIniBody() throws JspTagException{
//  System.out.println("doIniBody");
//  
// }
 public void setCounts(int c){
  System.out.println("setCounts");
  this.counts=c;
 }
// public void setBodyContent(BodyContent bodyContent){
//  System.out.println("setBodyContent");
//  this.bodyContent=bodyContent;
// }
 public int doAfterBody() throws JspTagException{
  
  if(counts>=1){
   System.out.println(counts+"@");
   System.out.println("doAfterBody---");
   try{
    JspWriter out=pageContext.getOut();
    System.out.print(counts+"#");
    out.println("doAfterBody");
    out.println(counts+"@");
   }catch(Exception e){
    e.printStackTrace();
   }
   counts--;
   return EVAL_BODY_AGAIN;
  }else{
   return SKIP_BODY;
  }
  
 }
 public int doEndTag() throws JspTagException{
  String dataString=new Date().toString();
  System.out.println("doEndTag");
  JspWriter out=pageContext.getOut();
  try{
   
   out.println("现在的时间是"+dataString);
   out.print("是doEndTag");
  }catch(Exception e){
   throw new JspTagException("Fatal error:hello tag conld not write to JSP out");
  }
  
  return EVAL_PAGE;
 }
 public int doStartTag() throws JspTagException {
  System.out.println("doStartTag");
  JspWriter out=pageContext.getOut();
  for(int i=1;i<=10;i++){
   try {
    out.println(i+"+#"+"Start<br>");
   } catch (IOException e) {
    e.printStackTrace();
   }
  }
  
  return EVAL_BODY_INCLUDE;
 }
 public int getCounts() {
  return counts;
 }

以上是一段继承自BodyTagSupport 的一段自定义标签类,它的方法就是迭代类中的counts变量以下访问的JSP代码:

<%@ page language="java" import="java.util.*" contentType="text/html;charset=gb2312"%>
<%@ taglib uri="/demo" prefix="somePrefix"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core"  prefix="c"%>
<html>
 <head>
  <title>TagSupport的应用示例</title>
 </head>
 <body>

<%boolean b=true; %>
<%String st="hh";
pageContext.setAttribute("sss",st); %>
<c:if test="${pageScope.sss=='hh'}">
456456456456456
</c:if>
<c:set value="123123" var="sfq" scope="page"></c:set>
<c:out value="sfq"></c:out>
<somePrefix:hello counts="5">111</somePrefix:hello>
 <%out.print("能不能执行"); %>
 </body>
</html>

如果doStartTag()返回的是EVAL_BODY_INCLUDE-->doAfterTag()方法,如果它返回SKIP_BODY就执行doEndTag()方法.

   在doAfterTag()方法中返回EVAL_BODY_AGAIN来重复执行doAfterTag()方法,   返回SKIP_BODY值则执行doEndTag()方法.

在doEndTag()方法中返回EVAL_PAGE值,则执行此标签的后的其它代码,返回SKIP_PAGE则不执行此页面的其它代码.

以上是我个人见解,如有疑问请发E-mail:sfq1984sxs@126.com联系.

JSP自定义标签实例之:BodyTagSupport

当需要处理标签体时,标签处理类应继承BodyTagSupport:  一、需求分析:  数据展示是常有长字符串会影响页面显示效果,需要对其按一定和长度和形式进行省略。来控制显示效果。  二、...
  • z69183787
  • z69183787
  • 2015年06月28日 17:58
  • 3553

struts详细介绍

Struts2 1. 目录 1.目录 2.MVC 3.STRUTS2解析                 4.标签 5.OGNL 6.国际化 7.类型转换 8.校验 9. 拦截器 10.上传与下载...
  • u011018979
  • u011018979
  • 2014年07月11日 11:04
  • 2875

自订标签库--TagSupport详解

1 TagSupport与BodyTagSupport的区别  TagSupport与BodyTagSupport的区别主要是标签处理类是否需要与标签体交互,如果不需要交互的就用TagSuppo...
  • zljjava
  • zljjava
  • 2013年12月19日 18:41
  • 10901

J2EE中自定义标签以及TagSupport和BodyTagSupport的用法

StringAppendTags   package cn.xy.myTag; import javax.servlet.jsp.JspException; import java...
  • z69183787
  • z69183787
  • 2015年06月28日 17:59
  • 755

Filter 执行顺序介绍

Filter介绍  Filter可认为是Servlet的一种“变种”,它主要用于对用户请求进行预处理,也可以对HttpServletResponse进行后处理,是个典型的处理链。它与Servle...
  • jalorchen_java
  • jalorchen_java
  • 2013年05月05日 11:20
  • 485

Java 指定线程执行顺序(三种方式)

这里指定线程启动顺序,借鉴高洪岩老师的思路,通过共享对象锁加上可见变量来实现。直接看代码: package extthread; import service.MyService; public ...
  • difffate
  • difffate
  • 2017年03月19日 14:10
  • 5573

关于sql和MySQL的语句执行顺序(必看!!!)

今天遇到一个问题就是mysql中insert into 和update以及delete语句中能使用as别名吗?目前还在查看,但是在查阅资料时发现了一些有益的知识,给大家分享一下,就是关于sql以及My...
  • u014044812
  • u014044812
  • 2016年03月29日 12:15
  • 23404

for循环语句头的执行顺序

算是温习吧。问题比较基础,但是也比较重要。 for循环可以说在每个程序中都少不了的,语句头包括三个部分:初始化,判读条件,一个表达式。 但是这三个部分的执行顺序是什么,这是我们所关心的,也是本文所...
  • hitwhylz
  • hitwhylz
  • 2013年09月19日 16:40
  • 28353

Mysql 语句执行顺序

纸上得来终觉浅 1.这样一个问题,作为一个开发人员需要掌握数据库的哪些东西?  在开发中涉及到数据库,基本上只用到了sql语句,如何写sql以及对其进行优化就比较重要,那些mysql的厚本书籍针对的是...
  • Jintao_Ma
  • Jintao_Ma
  • 2016年04月26日 21:51
  • 11553

js 程序执行与顺序实现详解

声明:这是转载的 原帖地址:http://www.jb51.net/article/36755.htm JavaScript是一种描述型脚本语言,由浏览器进行动态的解析与执行,浏览器对于不同的方式...
  • bruce_sky
  • bruce_sky
  • 2015年06月08日 15:46
  • 5674
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:BodyTagSupport的执行顺序介绍
举报原因:
原因补充:

(最多只允许输入30个字)