首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

怎么用taglib(自定义标签)分页显示

2012-02-29 
请教高手如何用taglib(自定义标签)分页显示packagebank.based.network.taglibimportjava.sql.Connection

请教高手如何用taglib(自定义标签)分页显示
package   bank.based.network.taglib;

import   java.sql.Connection;
import   java.sql.ResultSet;
import   java.sql.Statement;

import   javax.servlet.jsp.JspException;
import   javax.servlet.jsp.PageContext;
import   javax.servlet.jsp.tagext.BodyContent;
import   javax.servlet.jsp.tagext.BodyTag;
import   javax.servlet.jsp.tagext.Tag;

import   bank.based.network.bean.JDBCCon;

public   class   TranLog   implements   BodyTag
{

public   void   getPage()
{
Connection   con   =   null;
ResultSet   rs   =   null;
int   pagesize   =   10;//每页显示十条记录

try
{
Statement   st   =   con.createStatement();

con   =   JDBCCon.getConnection();

String   sql   =   "select   count(*)   from   transfermoney_log ";

rs   =   st.executeQuery(sql);

int   pagesum   =   rs.getRow();//查询出数据库中的总记录

int   page   =   pagesum/pagesize;//的到多少页
      






}
catch(Exception   e)
{
e.printStackTrace();
}
}
public   int   doEndTag()   throws   JspException
{
//   TODO   Auto-generated   method   stub
return   0;
}

public   int   doStartTag()   throws   JspException
{
//   TODO   Auto-generated   method   stub
return   0;
}
public   void   doInitBody()   throws   JspException
{
//   TODO   Auto-generated   method   stub

}

public   void   setBodyContent(BodyContent   arg0)
{
//   TODO   Auto-generated   method   stub

}

public   int   doAfterBody()   throws   JspException
{
//   TODO   Auto-generated   method   stub
return   0;
}

public   Tag   getParent()
{
//   TODO   Auto-generated   method   stub
return   null;
}

public   void   release()
{
//   TODO   Auto-generated   method   stub

}

public   void   setPageContext(PageContext   arg0)
{
//   TODO   Auto-generated   method   stub

}

public   void   setParent(Tag   arg0)
{
//   TODO   Auto-generated   method   stub

}

}

我的问题就是:

查询出数据库中的几百条数据

每十条为一页

int   page   =   pagesum/pagesize得到的不一定整数页数
怎么保持显示的一致性


不在JSP里写JAVA代码
都写在taglib(自定义标签)里

请教高手这个程序应该怎么改


[解决办法]
直接使用JSTL
[解决办法]
我这边是用structs+taglib做的翻页,其中数据显示用structs标签,而当前页数的显示,及上一页,下一页的控制都用taglib做的自定义标签.jsp代码如下:
<logic:present name= "List1 " scope= "request ">
<logic:iterate name= "List1 " id= "List1 " type= "structs.query.QueryForm ">
<tr bgcolor= "#ffffff ">
<td> <bean:write name= "List1 " property= "fid1 "/> </td>


<td> <bean:write name= "List1 " property= "fckid "/> </td>
<td> <bean:write name= "List1 " property= "frefsite "/> </td>
<td> <bean:write name= "List1 " property= "fentertime "/> </td>
<td> <bean:write name= "List1 " property= "fremoteip "/> </td>
<td> <bean:write name= "List1 " property= "farea "/> </td>
<td> <bean:write name= "List1 " property= "farea2 "/> </td>
<td> <bean:write name= "List1 " property= "furl "/> </td>
</tr>
</logic:iterate>
</logic:present>
<tr bgcolor= "#ffffff ">
<td colspan= "10 ">
<a href= "# " onclick= "pagego( ' <ht:page type= "previous "/> ') "> <bean:message key= "prepage "/> </a>
&nbsp;&nbsp;&nbsp;
<a href= "# " onclick= "pagego( ' <ht:page type= "next "/> ') "> <bean:message key= "nextpage "/> </a>
&nbsp;&nbsp;&nbsp;
<bean:message key= "currentpage "/> : <ht:page type= "current "/>
&nbsp;&nbsp;&nbsp;
<bean:message key= "totalsnum "/> : <ht:totals type= "currentdaylog "/>
&nbsp;&nbsp;&nbsp;
<input size= "2 " class= "bd " name= "jp " value= '1 '>
<input type=button onclick= "pagego(document.all.jp.value) " class= "bd " value= ' <bean:message key= "jumpto "/> '>
</td>
</tr>

<ht:page的是自定义标签,控制翻页的.
public class Page extends TagSupport {
private String type = null;

public void setType(String type) {
this.type = type;
}

public int doStartTag() throws JspException {
try {
JspWriter out = pageContext.getOut();
String page = pageContext.getRequest().getParameter( "page ");
String pages = " ";
if (page != null) {
if (Integer.parseInt(page) < 1) {
page = "1 ";
}
if (type.equals( "previous ")) {
pages = Integer.parseInt(page) - 1 + " ";
} else if (type.equals( "next ")) {
pages = Integer.parseInt(page) + 1 + " ";
} else if (type.equals( "current ")) {
pages = Integer.parseInt(page) + " ";
}
} else {
if (type.equals( "previous ")) {
pages = "1 ";
} else if (type.equals( "next ")) {
pages = "2 ";
} else if (type.equals( "current ")) {
pages = "1 ";
}
}
out.print(pages);
} catch (Exception e) {
throw new JspException(e);
}
return EVAL_PAGE;
}
}

热点排行