大侠们早上好!
小弟我想在JSP页面中分页显示出来从数据库获取的数据,比如:
1/10页 总数:10页 下拉框 首页 上一页 下一页 尾页
名字 年龄 性别
张三 10 男
李四 10 女
王五 10 男
每页显示三行,数据是从数据库里获取的,Bean类和Dao类已经写好,获取的方法是:
public ArrayList<Student> getStudent() {
String sql = "select * from Student";
ArrayList<Student>items=new ArrayList<Student>();
我想循环输出显示数据,每页只显示三行,分十页。
JSP页面该怎样写?请大侠们帮忙!!
------解决方案--------------------
你是用的hibernate吧,那hibernate不是有自带的两个方法query.setFirstResult();query.setMaxResults();这不就很容易,你又不用写sql了
------解决方案--------------------
- Java code
import java.util.List;import org.apache.struts2.ServletActionContext;import org.hibernate.HibernateException;import org.hibernate.Session;import org.springframework.orm.hibernate3.HibernateCallback;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;public class Zmxpage extends HibernateDaoSupport { private int first;//从哪开始 private int pageSize;//一页存在多少数据 private String hql;//查询语句 private String hql1; public String getHql1() { return hql1; } public void setHql1(String hql1) { this.hql1 = hql1; } /* * ???磺Zmxpage z = new Zmxpage(); * z.getPages(1,10"from BeanName"); * List list = z.findByPage(); */// 分页方法 public void getPages(int currentPage,int pageSize,String hql) { this.first = (currentPage-1)*pageSize; this.pageSize = pageSize; this.hql = hql; } public List findByPage() { try { List result = (List)getHibernateTemplate().execute( new HibernateCallback() { public Object doInHibernate(Session sess)throws HibernateException { List tmp = sess.createQuery(hql) .setFirstResult(first) .setMaxResults(pageSize) .list(); return tmp; } }); return result; } catch (RuntimeException re) { throw re; } } public int gettotalPages() {//获取总页数 try { List list = getHibernateTemplate().find("select count(*) "+hql); int j=0; j = ((Long)list.get(0)).intValue(); int i = 0; if(j%pageSize==0) i = j/pageSize; else i = j/pageSize+1; return i; } catch (RuntimeException re) { throw re; } }}
------解决方案--------------------
jsp页面
<tr>
<td colspan="5" align="center">
<s:a href="rybxx!show?currentpage=1&name=%{name}&sex=%{sex}">首页|</s:a>
<s:if test="%{currentpage>1}">
<s:a href="rybxx!show?currentpage=%{currentpage-1}&name=%{name}&sex=%{sex}">上一页|</s:a>
</s:if>
<s:if test="%{currentpage<pages}">
<s:a href="rybxx!show?currentpage=%{currentpage+1}&name=%{name}&sex=%{sex}">下一页|</s:a>
</s:if>
<s:a href="rybxx!show?currentpage=%{pages}&name=%{name}&sex=%{sex}">尾页|</s:a>
当前${currentpage}页| 共 ${pages}页
</tr>
------解决方案--------------------
http://wenku.baidu.com/view/e32c9c946bec0975f465e275.html
数据库中有TopN这个东西,这里是oracle实现它的方式,自己看吧