简单易用的分页标签

1 篇文章 0 订阅

用过一些标签感觉用起来没有省多少力气,学了学标签的写法自己写了一个,感觉还可以.
下面是使用的例子:
<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;
  }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值