doInitBody 方法
此方法在body内容已经设好,但未被计算之前被调用。你可以根据不同的body内容来制定初始化策略。
doAfterBody方法
此方法在body内容已被计算后进行调用。
和doStartTag方法一样,doAfterBody方法返回一个指示符指示是否要继续计算body,如果要继续计算,则doAfterBody应返回EVAL_BODY_BUFFERED,否则,它应返回SKIP_BODY。
release 方法
tag处理类调用此方法将它的状态重置为初始状态,并释放所有的私有资源。
以下的例子读取body的内容(其中含有一条sql语句),然后将它传递给一个对象,让它进行查询。由于此处body不须重新计算,所以doAfterBody会返回SKIP_BODY。
Public class QueryTag extends BodyTagSupport
{
public int doAfterBody() throws JspTagException
{
BodyContent bc = getBodyContent();
//将body的内容以字符串的格式提取出来
String query = bc.getString();
//清除body
bc.clearBody();
try{
Statement stmt = connection.createStatement();
Result result = stmt.executeQuery(query);
}catch(SQLException e){
throw new JspTagException(“queryTag: “ + e.getMessage() );
return SKIP_BODY;
}
}
body-content元素
由于tag可能会有body,你必须用body-content元素来指定body内容的类型:
<body-content>JSP|tagdependent</body-content>
如果body的内容是定制的或内部的tag、脚本元素、或HTML广本,则归类为JSP类型。其他的类型,比如上面代码所述的?D?D将sql
statement类传给 query tag的这种类型应该标为tagdependent。
注意:实际上body-content的值并不影响tag处理类对body内容的处理,它仅仅是被tag编辑工具用来描述此body的内容。
用tags定义脚本变量
tag处理类
tag处理类负责创建或设置页面中定义的脚本变量,用pageContext.setAttribute(name,value,scope)或pageContext.setAttribute(name,value)方法来实现。一般来说,tag处理类通过脚本变量的名称来获取它,脚本变量的名称一般可用get方法来获得。
如果脚本变量的值依赖于tag处理类中的上下文中某一对象,那它可用pageContext.getAttribute(name,scope)方法来找到那个对象。一般的处理过程是tag处理类先找到脚本变量,再对其进行处理,然后用pageContext.setAttribute(name,object)的方法来设置它的新值。
对象的生存周期(scope)如下表:
对象的生存周期表
名字
可访问范围
生存周期
page
当前页面
一直有效,除非页面向客户提交响应或重定向到一个新页面
request
当前页面或当前页面重定向到的页面
一直有效,除非页面向客户提交响应
session
当前页面或在同一浏览器窗口中的页面
一直有效,除非关闭当前浏览器、超时、网络故障
application
整个web应用程序的所有请求
一直有效,除非发生网络故障、服务器故障
提供关于脚本变量的信息
以下示例定义了一个名为“book”的脚本变量,用来访问程序中关于书的信息:
<bean:define id=”book” name=”bookDB” property=”bookDetails”
type=”database.BookDetails” />
<font color=”red” size=”+2” >
<%= messages.getString(“CartRemoved”) %>
| Converted from CHM to HTML with chm2web Pro 2.7 (unicode) |