用过一些标签感觉用起来没有省多少力气,学了学标签的写法自己写了一个,感觉还可以.
下面是使用的例子:
<em:query sql="select id,title,begindate,enddate,address,compere from m_meeting where subflag='4' ">
<table width="95%" align="center" >
<tr >
<td colspan="6">
第_curpage_页 共_pagecount_页 共_recordcount_条
<input type=submit name="first" value="首页" >
<input type=submit name="piror" value="上一页" >
<input type=submit name="next" value="下一页" >
<input type=submit name="last" value="尾页" >
<input type="hidden" name="emPageIndex" value="_emPageIndex_">
</td>
</tr>
<tr >
<td >序号</td>
<td >标题</td>
<td >开始时间</td>
<td >结束时间</td>
<td >主持人</td>
<td >地点</td>
</tr>
<tr>&
<td >_NO_</td>
<td >_2_</td>
<td >_3_</td>
<td >_4_</td>
<td >_6_</td>
<td >_5_</td>
&</tr>
</table>
</em:query>
Tag.java
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.TagSupport;
import javax.servlet.jsp.tagext.BodyTagSupport;
public class Tag
extends BodyTagSupport {
private String sql;
public int doStartTag() {
return this.EVAL_BODY_BUFFERED;
}
public void setSql(String arg)
{
this.sql = arg;
}
String field;
public void setField(String arg)
{
this.field = arg;
}
public int intPageIndex ;
private void initParameter(javax.servlet.ServletRequest request )
{
try {
String pageindex = request.getParameter("emPageIndex");
pageindex = pageindex == null || pageindex.equals("_emPageIndex_") ? "0" : pageindex;
intPageIndex =Integer.parseInt( pageindex );
if( request.getParameter("first") != null )
intPageIndex = 0;
else if ( request.getParameter("piror") != null )
intPageIndex = intPageIndex-1;
else if ( request.getParameter("next") != null )
intPageIndex = intPageIndex+1;
else if ( request.getParameter("last") != null )
intPageIndex = 100000;
}
catch (Exception ex) {
intPageIndex = 0;
}
}
public int doEndTag() throws javax.servlet.jsp.JspException
{
try
{
initParameter( this.pageContext.getRequest() );
String body = this.getBodyContent().getString();
String navigation = body.substring(0, body.indexOf("<tr>&")-1 );
String data = body.substring( body.indexOf("<tr>&")+5,body.indexOf("&</tr>") );
String tail = body.substring( body.indexOf("&</tr>")+6,body.length() );
Pagination page = new Pagination(sql,intPageIndex);
sun.jdbc.rowset.CachedRowSet rowset = page.getRcord();
String field ;
navigation = navigation.replaceAll( "_curpage_", (page.getPageIndex()+1)+"" );
navigation = navigation.replaceAll( "_pagecount_", (page.getPageCount())+"" );
navigation = navigation.replaceAll( "_recordcount_", (page.getRecordCount())+"" );
navigation = navigation.replaceAll( "_emPageIndex_", (page.getPageIndex())+"" );
this.pageContext.getOut().write( navigation );
if (rowset != null) {
String temp;
for (int j=1; rowset.next();
pageContext.getOut().write("<tr>/n" + temp + "</tr>/n"),j++) {
temp = data;
temp = temp.replaceAll("_NO_" , j+"");
int size = rowset.getMetaData().getColumnCount();
for (int i = 1; i <= size; i++) {
temp = temp.replaceAll("_" + i + "_",com.sinosoft.util.tool.JUtilities.getString(rowset,i));
}
}
}
this.pageContext.getOut().write( tail );
}
catch (Exception e)
{
//throw new JspException("IO Error: " + e.getMessage());
e.printStackTrace();
}
return EVAL_PAGE;
}
}