实现构想:把每一页封装成一个对象(PagerBean),点击“下一页”、“上一页”、“首页”、“末页”传递不同的参数值,返回一PagerBean对象。
1、 PagerBean.java
属性:
private int pageSize;每页5条数据
private int currentPage = 1; // 当前页
private int totalPages = 0; // 总页数
private int totalRows = 0; // 总数据数
private int pageStartRow = 0;// 每页的起始数
private int pageEndRow = 0; // 每页显示数据的终止数
private int startRow=0; //当前页在数据库中的起始行
private boolean hasNextPage = false; // 是否有下一页
private boolean hasPreviousPage = false; // 是否有前一页
方法:
public PagerBean();
public PagerBean(int totalRows,int pageSize);
public PagerBean(int currentPage,int startRow,int pageEndRow,int pageStartRow,int totalRows,int pageSize,int totalPages);
public void first();//首页
public void previous();//上一页
public void next();//下一页
public void last();//末页
public int getCurrentPage() ;
public void setCurrentPage(int currentPage) ;
public int getTotalPages() ;
public void setTotalPages(int totalPages);
public int getPageSize();
public void setPageSize(int pageSize) ;
public int getTotalRows() ;
public void setTotalRows(int totalRows);
public int getPageStartRow();
public void setPageStartRow(int pageStartRow);
public int getPageEndRow();
public void setPageEndRow(int pageEndRow) ;
public boolean isHasNextPage();
public void setHasNextPage(boolean hasNextPage) ;
public boolean isHasPreviousPage();
public void setHasPreviousPage(boolean hasPreviousPage);
public int getStartRow() ;
public void setStartRow(int startRow) ;
2、 界面代码:
<td colspan="3" align="center">
第<s:property value="thispage.getCurrentPage()" />页/
共<s:property value="thispage.getTotalPages()" />页
<s:url id="url_first" value="showbooks.action">
<s:param name="currentPage" value="1"></s:param>
</s:url>
<s:url id="url_pre" value="showbooks.action">
<s:param name="currentPage" value="2"></s:param>
</s:url>
<s:url id="url_next" value="showbooks.action">
<s:param name="currentPage" value="3"></s:param>
</s:url>
<s:url id="url_last" value="showbooks.action">
<s:param name="currentPage" value="4"></s:param>
</s:url>
<s:a href="%{url_first}">首页</s:a>
<s:a href="%{url_pre}">上一页</s:a>
<s:a href="%{url_next}">下一页</s:a>
<s:a href="%{url_last}">末页</s:a>
</td>
3、 Action代码:
//实现分页
public List<Book> getShowPage(){
HttpServletRequest request = (HttpServletRequest)ActionContext.getContext().get(org.apache.struts2.StrutsStatics.HTTP_REQUEST);
HttpSession session=request.getSession();
List<Book> booklist=null;
PagerBLO pb=new PagerBLO();
BookBLO bb=new BookBLO();
totalRows=bb.getTotal_BLO();
if(session.getAttribute("pB")==null){
pB=new PagerBean(totalRows,pageSize);//pram1:总记录数;pram2:每页记录数
session.setAttribute("pB", pB);
}
else{
pB=(PagerBean) session.getAttribute("pB");
}
if(currentPage==1){
pB.first();
}
if(currentPage==2){
pB.previous();
}
if(currentPage==3){
pB.next();
}
if(currentPage==4){
pB.last();
}
booklist=pb.getBooksByPager(pB);
return booklist;
}
4、 Server相关方法:
public List<Book> getBooksByPager(PagerBean page){
List<Book> books=null;
PagerDAO pd=new PagerDAO();
books=pd.getAnyBook(page.getPageSize(), page.getStartRow());
return books;
}
5、 Dao层代码
public List<Book> getAnyBook(int pageSize,int startRow){
List<Book> anyBooks = new ArrayList();
Session session = HibernateSessionFactory.getSession();
String hql = "from Book";
Query q=session.createQuery(hql);
q.setFirstResult(startRow);
q.setMaxResults(pageSize);
anyBooks = q.list();
return anyBooks;
}
分享到:
相关推荐
本文将深入探讨如何在使用Hibernate和Struts框架时实现分页功能,以便在大型应用中有效地管理数据展示,提升用户体验。 首先,让我们了解一下Hibernate。Hibernate是一个对象关系映射(ORM)框架,它允许开发者使用...
在struts2中,可以配置Action来处理用户的分页请求,并将数据以JSON格式返回给前端。 - **Action的配置:** 在struts2中,需要配置Action以便接收分页请求。Action中可以包含分页请求所需的所有参数,如当前页码...
3. 参数传递:EXT请求中的分页参数或树节点ID可以通过Struts2的拦截器或ActionContext传递给Action,以便进行正确的数据查询和处理。 总结来说,EXT的分页和树形结构功能在构建复杂的Web应用程序中起着至关重要的...
在MyEclipse这个集成开发环境中,开发者可以方便地利用Hibernate和Struts搭建项目,实现数据的CRUD操作,包括分页查询。以下将详细介绍如何在MyEclipse中使用Hibernate和Struts进行分页操作。 1. **配置Hibernate**...
2. **框架集成**:许多Java Web框架(如Spring MVC、Struts2)都有与之兼容的分页插件或组件。 **六、实际开发注意事项** 1. **安全性**:确保分页参数不能被恶意篡改,防止SQL注入攻击。 2. **性能优化**:合理...
2. **分页显示**:为了提高用户体验,论坛帖子列表通常采用分页展示,这涉及到数据库的分页查询和前端的分页控件。 3. **搜索功能**:用户能够根据关键词搜索帖子,这就需要实现全文检索或者基于关键词的查询。 4. *...
通过优化后台算法,实现了全文的高亮处理,这可能涉及到了数据分页、延迟加载(lazy loading)或者前端的虚拟滚动等技术,以减少初次加载的数据量,提高用户体验。 2. Struts框架转换:从Struts2到Struts1的转换...
1. **分页**:DisplayTag支持自动分页,可以轻松地将大量数据分成可管理的小块,改善用户体验。 2. **排序**:用户可以通过点击列头对表格进行排序,这对于处理大量需要排序的数据非常有用。 3. **格式化和国际化**...
SSH(Struts2、Spring、Hibernate)是一个流行的企业级Web应用程序框架,它将MVC(Model-View-Controller)设计模式应用于实际开发中,提供了一种灵活且强大的架构。EXTJS则是一个JavaScript UI库,用于创建富客户端...
同时,考虑到性能优化,对于大数据量的图表,开发者可能需要采用分页加载、延迟渲染等策略,减少初次加载时的负担,并在用户滚动或缩放时动态加载更多数据。这需要对前端性能优化有一定的了解。 在实际项目中,图表...
- Java:在Java环境中,开发者可以使用诸如Spring MVC、Struts2等框架,配合JSON或者XML格式来传输数据,DataTables会自动处理这些数据并显示在表格中。 - C++/C#:对于C++和C#开发者,可以通过ASP.NET、ASP.NET ...
该系统利用Java语言的强大特性以及一系列成熟的开源框架,如Hibernate3、Struts2、Spring2和Freemarker等,来实现高性能和灵活性。 **特点:** 1. **强大的Java EE基础**:基于Java语言开发,具备稳定、安全、高效...
Grid++ Report还提供了丰富的交互功能,如分页、排序、搜索等,提升用户体验。 7. **源码分析与二次开发** 作为开源工具,Grid++ Report的源码可供开发者研究和扩展。通过对源码的学习,我们可以深入了解其内部...
- **No.2 开发心得与小技巧**:这部分图例则会分享开发人员在实际操作中积累的经验和技巧。 #### 1.2 准备工作 为了能够顺利地进行开发,需要完成一系列准备工作,包括但不限于: - **下载并安装dorado**:确保安装...
在Wicket问世之初,市场上已经存在多种成熟的Java Web框架,如Struts、WebWork等。对于Wicket是否属于“重新发明轮子”的讨论一直存在。然而,Wicket通过其独特的组件化设计和易于使用的特性,在众多框架中脱颖而出...
【JSP博客系统详解】 JSP(JavaServer Pages)是一种基于...虽然初次尝试可能会花费较长的时间,但随着对JSP和相关技术理解的加深,开发效率会显著提高,功能也会更加丰富。记住,不断实践和学习是提升技术的关键。