写的bbs到了最后阶段才加上了
貌似大体有四种实现方法,做一个用一个吧
使用范围:数据量较小,网络流量较小的项目
缺点:每次显示一页都会查出所有数据然后利用偏移显示出需要的数据
思想:
利用的是mysql查询时的语句 limit offset,rows
offset为起始查询点,rows为显示行数
1.在相应javabean写一个函数 返回要查询项的总数
public int partPostCount()
{
String strSql="select count(*) as Counts from posts ";
}
2.写另一个函数,用于获取查询结果
另:mysql用limit sql server可以用top
public Vector getPostList()
{
Vector postVector=new Vector();
String strSql = "select postId,postTitle,author,comcount,click,sign from posts where part=? order by sign desc limit ?,5";
try{
DBConnect dbc=new DBConnect(strSql);
dbc.setInt(1,part);
dbc.setInt(2, (dipage-1)*5);//注意这里,设置显示的开始位置(页码-1)*每页显示个数
ResultSet rs=dbc.executeQuery();
while(rs.next())
{
Posts pos=new Posts();
pos.setId(rs.getInt(1));
pos.setTitle(rs.getString(2));
pos.setAuthor(rs.getString(3));
pos.setComcount(rs.getInt(4));
pos.setClick(rs.getInt(5));
pos.setSign(rs.getInt(6));
postVector.add(pos);
}
dbc.close();
return postVector;
}catch(Exception e)
{
return null;
}
}
3..在显示的jsp页面中
<%//处理分页
int dipage=1;
String pages=request.getParameter("dipage");//获取页码
if(pages==null || pages.length()==0)
pages="1";
try{
dipage=Integer.parseInt(pages);
}catch(Exception e)
{
dipage=1;
}
int pageSize=5;//每页显示数目,于javabean中设置一致
int recordCount= .partPostCount();//调用第一步写的javabean函数
int pageCount=0;//计算总页数
if(recordCount%pageSize==0)
pageCount=recordCount/pageSize;
else
pageCount=recordCount/pageSize+1;
//之后可以直接调用第二步写的javabean
Vector postVector=post.getPostList();
for(int i=0;i<postVector.size();i++)
{
post=(Posts)postVector.get(i);
//后面用post对象的get显示出来例如<%=post.getAuthor() %>
%>
在适当位置加入调换页码的链接:
<% if(dipage!=1){%>
<a href="PostList.jsp?dipage=1">第一页</a>
<a href="PostList.jsp?dipage=<%=(dipage-1) %>">上一页</a>
<%} %>
<% if(dipage!=pageCount) {%>
<a href="PostList.jsp?dipage=<%=(dipage+1) %>">下一页</a>
<a href="PostList.jsp?dipage=<%=pageCount %>">尾页</a>
PS:第一种写完了,呵呵
写下一个的用另一种方法咯 稻草誓言http://blog.sina.com/programbus