`
Quen
  • 浏览: 2170 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

strut2中分页的实现的初体验

阅读更多
实现构想:把每一页封装成一个对象(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;
}

分享到:
评论
3 楼 norrain 2010-07-18  
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; 
} 
2 楼 Quen 2010-04-28  
mxl86 写道
哥们,用下编辑器的code功能吧,你这样视觉太不爽了

说的也是,谢谢!下次一定用!
1 楼 mxl86 2010-04-27  
哥们,用下编辑器的code功能吧,你这样视觉太不爽了

相关推荐

    java hibernate_struts分页

    本文将深入探讨如何在使用Hibernate和Struts框架时实现分页功能,以便在大型应用中有效地管理数据展示,提升用户体验。 首先,让我们了解一下Hibernate。Hibernate是一个对象关系映射(ORM)框架,它允许开发者使用...

    jquery pagination分页插件使用详解(后台struts2)

    在struts2中,可以配置Action来处理用户的分页请求,并将数据以JSON格式返回给前端。 - **Action的配置:** 在struts2中,需要配置Action以便接收分页请求。Action中可以包含分页请求所需的所有参数,如当前页码...

    EXT 分页,树形结构案列

    3. 参数传递:EXT请求中的分页参数或树节点ID可以通过Struts2的拦截器或ActionContext传递给Action,以便进行正确的数据查询和处理。 总结来说,EXT的分页和树形结构功能在构建复杂的Web应用程序中起着至关重要的...

    hibernate分页

    在MyEclipse这个集成开发环境中,开发者可以方便地利用Hibernate和Struts搭建项目,实现数据的CRUD操作,包括分页查询。以下将详细介绍如何在MyEclipse中使用Hibernate和Struts进行分页操作。 1. **配置Hibernate**...

    JSP分页组件

    2. **框架集成**:许多Java Web框架(如Spring MVC、Struts2)都有与之兼容的分页插件或组件。 **六、实际开发注意事项** 1. **安全性**:确保分页参数不能被恶意篡改,防止SQL注入攻击。 2. **性能优化**:合理...

    bbs编程论坛

    2. **分页显示**:为了提高用户体验,论坛帖子列表通常采用分页展示,这涉及到数据库的分页查询和前端的分页控件。 3. **搜索功能**:用户能够根据关键词搜索帖子,这就需要实现全文检索或者基于关键词的查询。 4. *...

    工作总结 工作总结 程序员 工作总结 程序员

    通过优化后台算法,实现了全文的高亮处理,这可能涉及到了数据分页、延迟加载(lazy loading)或者前端的虚拟滚动等技术,以减少初次加载的数据量,提高用户体验。 2. Struts框架转换:从Struts2到Struts1的转换...

    displaytag的例子,很适合初学者

    1. **分页**:DisplayTag支持自动分页,可以轻松地将大量数据分成可管理的小块,改善用户体验。 2. **排序**:用户可以通过点击列头对表格进行排序,这对于处理大量需要排序的数据非常有用。 3. **格式化和国际化**...

    ssh_ext_图书管理系统

    SSH(Struts2、Spring、Hibernate)是一个流行的企业级Web应用程序框架,它将MVC(Model-View-Controller)设计模式应用于实际开发中,提供了一种灵活且强大的架构。EXTJS则是一个JavaScript UI库,用于创建富客户端...

    图表技术在Java Web应用程序中的应用研究.zip

    同时,考虑到性能优化,对于大数据量的图表,开发者可能需要采用分页加载、延迟渲染等策略,减少初次加载时的负担,并在用户滚动或缩放时动态加载更多数据。这需要对前端性能优化有一定的了解。 在实际项目中,图表...

    DataTables很好用的数据表格工具

    - Java:在Java环境中,开发者可以使用诸如Spring MVC、Struts2等框架,配合JSON或者XML格式来传输数据,DataTables会自动处理这些数据并显示在表格中。 - C++/C#:对于C++和C#开发者,可以通过ASP.NET、ASP.NET ...

    JEECMS2012系统使用手册2012-07美化版(pdf格式)

    该系统利用Java语言的强大特性以及一系列成熟的开源框架,如Hibernate3、Struts2、Spring2和Freemarker等,来实现高性能和灵活性。 **特点:** 1. **强大的Java EE基础**:基于Java语言开发,具备稳定、安全、高效...

    grid++ report在线报表的使用笔记

    Grid++ Report还提供了丰富的交互功能,如分页、排序、搜索等,提升用户体验。 7. **源码分析与二次开发** 作为开源工具,Grid++ Report的源码可供开发者研究和扩展。通过对源码的学习,我们可以深入了解其内部...

    喝喝茶编编程(使用dorado基础技术进行Web应用开发)

    - **No.2 开发心得与小技巧**:这部分图例则会分享开发人员在实际操作中积累的经验和技巧。 #### 1.2 准备工作 为了能够顺利地进行开发,需要完成一系列准备工作,包括但不限于: - **下载并安装dorado**:确保安装...

    Wicket中文开发指南

    在Wicket问世之初,市场上已经存在多种成熟的Java Web框架,如Struts、WebWork等。对于Wicket是否属于“重新发明轮子”的讨论一直存在。然而,Wicket通过其独特的组件化设计和易于使用的特性,在众多框架中脱颖而出...

    jsp博客

    【JSP博客系统详解】 JSP(JavaServer Pages)是一种基于...虽然初次尝试可能会花费较长的时间,但随着对JSP和相关技术理解的加深,开发效率会显著提高,功能也会更加丰富。记住,不断实践和学习是提升技术的关键。

Global site tag (gtag.js) - Google Analytics