1.转自:http://www.cnblogs.com/shiyangxt/archive/2008/11/04/1316737.html
环境:MyEclipse6.5+Mysql5+struts2.0.11

实现分页用到三个类,分别为NewsDao.java(接口),NewsDaoImpl.java(实现),ListAction.java(调用方法)。

当然还有配好连接池的Mysql连接辅助类。在此不做过多介绍。

NewsDao.java

  1. package com.sy.dao;
  2.  
  3. import java.util.List;
  4.  
  5. import com.sy.vo.News;
  6.  
  7. public interface NewsDao {
  8.  
  9. public List<News> queryByPage(int pageSize,int pageNow);
  10.  
  11. public int count();
  12.  
  13. }

NewsDaoImpl.java

  1. package com.sy.dao.impl;
  2.  
  3. import java.sql.PreparedStatement;
  4. import java.sql.ResultSet;
  5. import java.text.SimpleDateFormat;
  6. import java.util.ArrayList;
  7. import java.util.List;
  8.  
  9. import com.sy.dao.NewsDao;
  10. import com.sy.util.DataBaseConnection;
  11. import com.sy.util.StringUtil;
  12. import com.sy.vo.News;
  13.  
  14. public class NewsDaoImpl implements NewsDao {
  15.  
  16. //获取分页新闻列表
  17. @SuppressWarnings("unchecked")
  18. public List<News> queryByPage(int i,int pageSize){
  19. List<News> newss=new ArrayList();
  20.  
  21. PreparedStatement pstmt = null ;
  22. String sql = null ;
  23. ResultSet rs = null ;
  24. DataBaseConnection dbc = null ;
  25. dbc = new DataBaseConnection() ;
  26.  
  27. sql = "select * from struts2new order by id asc limit " + i + "," + pageSize;
  28. try
  29. {
  30.  
  31. pstmt = dbc.getConnection().prepareStatement(sql);
  32.  
  33. rs = pstmt.executeQuery() ;
  34. while(rs.next())
  35. {
  36. News news=new News();
  37. news.setId(rs.getInt("id"));
  38. news.setName(rs.getString("name"));
  39. news.setTitle(rs.getString("title"));
  40. news.setDate(rs.getString("date"));
  41. news.setEmail(rs.getString("email"));
  42. news.setContent(rs.getString("content"));
  43. i++;
  44. newss.add(news);
  45. }
  46. rs.close() ;
  47. pstmt.close() ;
  48. }
  49. catch(Exception e)
  50. {
  51. System.out.println(e) ;
  52. }
  53. finally
  54. {
  55. dbc.close();
  56. }
  57. return newss;
  58. }
  59. //查询总行数
  60. public int count() {
  61. int intRowCount = ;//总行数
  62. PreparedStatement pstmt = null ;
  63. String sql = null ;
  64. ResultSet rs = null ;
  65. DataBaseConnection dbc = null ;
  66. dbc = new DataBaseConnection() ;
  67.  
  68. sql = "select count(id) from struts2new order by id asc";
  69. try
  70. {
  71. pstmt = dbc.getConnection().prepareStatement(sql);
  72. rs = pstmt.executeQuery();
  73. rs.next();//游标指向第一行
  74. intRowCount=rs.getInt();//取得总行数
  75. rs.close() ;
  76. pstmt.close() ;
  77. }
  78. catch(Exception e)
  79. {
  80. System.out.println(e) ;
  81. }
  82. finally
  83. {
  84. dbc.close();
  85. }
  86. return intRowCount;
  87. }
  88. }

ListAction.java

  1. package com.sy.action;
  2.  
  3. import java.util.List;
  4.  
  5. import com.opensymphony.xwork2.ActionSupport;
  6. import com.sy.dao.AdminDao;
  7. import com.sy.dao.NewsDao;
  8. import com.sy.dao.impl.AdminDaoImpl;
  9. import com.sy.dao.impl.NewsDaoImpl;
  10. import com.sy.vo.Admin;
  11. import com.sy.vo.News;
  12.  
  13. public class ListAction extends ActionSupport {
  14.  
  15. private static final long serialVersionUID = 1L;
  16. int i=;//中间变量
  17. private int k;//储存最大页面数
  18. private int pageNow=; //页码数,初始为1
  19. private int pageSize = ; //页面行数
  20. private int intRowCount;//总行数
  21. private int intPageCount;//总页数
  22. private Admin admin;
  23. private List<Admin> Adminss;
  24. private News news;
  25. @SuppressWarnings("unchecked")
  26. private List<News> Newss;
  27.  
  28. private int id;
  29. private int aid;
  30.  
  31. public News getNews() {
  32. return news;
  33. }
  34.  
  35. public void setNews(News news) {
  36. this.news = news;
  37. }
  38.  
  39. @SuppressWarnings("unchecked")
  40. public List<News> getNewss() {
  41. return Newss;
  42. }
  43. public void setNewss(List<News> newss) {
  44. Newss = newss;
  45. }
  46.  
  47. public int getId() {
  48. return id;
  49. }
  50.  
  51. public void setId(int id) {
  52. this.id = id;
  53. }
  54. public Admin getAdmin() {
  55. return admin;
  56. }
  57.  
  58. public void setAdmin(Admin admin) {
  59. this.admin = admin;
  60. }
  61.  
  62. public List<Admin> getAdminss() {
  63. return Adminss;
  64. }
  65.  
  66. public void setAdminss(List<Admin> adminss) {
  67. Adminss = adminss;
  68. }
  69. public int getAid() {
  70. return aid;
  71. }
  72.  
  73. public void setAid(int aid) {
  74. this.aid = aid;
  75. }
  76.  
  77. public int getPageNow() {
  78. return pageNow;
  79. }
  80.  
  81. public void setPageNow(int pageNow) {
  82. this.pageNow = pageNow;
  83. }
  84.  
  85. public int getPageSize() {
  86. return pageSize;
  87. }
  88.  
  89. public void setPageSize(int pageSize) {
  90. this.pageSize = pageSize;
  91. }
  92. public int getIntRowCount() {
  93. return intRowCount;
  94. }
  95.  
  96. public void setIntRowCount(int intRowCount) {
  97. this.intRowCount = intRowCount;
  98. }
  99.  
  100. public int getIntPageCount() {
  101. return intPageCount;
  102. }
  103.  
  104. public void setIntPageCount(int intPageCount) {
  105. this.intPageCount = intPageCount;
  106. }
  107. public int getK() {
  108. return k;
  109. }
  110.  
  111. public void setK(int k) {
  112. this.k = k;
  113. }
  114. @SuppressWarnings("unchecked")
  115. @Override
  116. //显示新闻列表
  117. public String execute() throws Exception {
  118.  
  119. NewsDao npage=new NewsDaoImpl();
  120. intRowCount=npage.count();
  121. k=(intRowCount + pageSize - ) / pageSize;
  122. intPageCount = (intRowCount + pageSize - ) / pageSize;//计算出总页数
  123. if(pageNow<){
  124. pageNow=;
  125. }
  126.  
  127. if(pageNow > intPageCount)
  128. pageNow=intPageCount;
  129. i = (pageNow -)*pageSize;
  130. NewsDao nlist=new NewsDaoImpl();
  131. if(null!=nlist.queryByPage(i,pageSize)){
  132. Newss = nlist.queryByPage(i,pageSize);
  133. return SUCCESS;
  134. }else{
  135. return "failure";
  136. }
  137. }
  138. ..
  139. }

struts.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE struts PUBLIC
  3. "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
  4. "http://struts.apache.org/dtds/struts-2.0.dtd">
  5. <struts>
  6. <package name="news" extends="struts-default">
  7.  
  8. ..
  9. <!-- 查看新闻列表 -->
  10. <action name="list" class="com.sy.action.ListAction">
  11. <result>/listNews.jsp</result>
  12. <result name="failure">/Showfailure.jsp</result>
  13. </action>
  14.  
  15. </package>
  16. </struts>

显示页面listNews.jsp

  1. <%@ page language="java" pageEncoding="UTF-8"%>
  2. <%@ taglib prefix="s" uri="/struts-tags"%>
  3. <%
  4. String path = request.getContextPath();
  5. String basePath = request.getScheme() + "://"
  6. + request.getServerName() + ":" + request.getServerPort()
  7. + path + "/";
  8. %>
  9. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  10. <html>
  11. <head>
  12. <base href="<%=basePath%>">
  13. <title>My JSP 'index.jsp' starting page</title>
  14. </head>
  15. <body>
  16.  
  17. ..
  18.  
  19. <center>
  20. <s:property value="intRowCount"/>记录&nbsp;&nbsp;
  21. <s:property value="pageNow"/>页&nbsp;&nbsp;
  22. <s:url id="url_pre" value="list.action">
  23. <s:param name="pageNow" value="pageNow-1"></s:param>
  24. </s:url>
  25.  
  26. <s:url id="url_next" value="list.action">
  27. <s:param name="pageNow" value="pageNow+1"></s:param>
  28. </s:url>
  29. <s:iterator value="Newss" status="status">
  30. <s:url id="url" value="list.action">
  31. <s:param name="pageNow" value="pageNow"/>
  32. </s:url>
  33. </s:iterator>
  34. <s:if test="pageNow==1">
  35. <s:a href="%{url_pre}">最前一页</s:a>
  36. </s:if>
  37. <s:else>
  38. <s:a href="%{url_pre}">上一页</s:a>
  39. </s:else>
  40. <s:if test="pageNow==k">
  41. <s:a href="%{url_next}">最后一页</s:a>
  42. </s:if>
  43. <s:else>
  44. <s:a href="%{url_next}">下一页</s:a>
  45. </s:else>
  46. </center>
  47. </body>
  48. </html>

效果:

struts2分页导航

  1. 首页 | 上一页 [] [] [] [] [] [] [] [] [] | 下一页 | 尾页  
  2. 上面效果中的 [] [] [] [] [] [] [] [] [] 这个效果用struts2bean标签可以完成。如下:
  3.  
  4. <s:bean name="org.apache.struts2.util.Counter" id="counter">
  5. <s:param name="first" value="" />//循环开始 这用时要放变量来反映分页导航条的变化
  6. <s:param name="last" value="" />//循环结束 这用时要放变量来反映分页导航条的变化
  7.  
  8. <s:iterator>//循环分页导航
  9.  
  10. <s:if test="pager.currentPage!=current-1">//不是当前页的显示效果
  11. <a href="<s:property value="#
  12. URL"/>&pageNum=<s:property/>">
  13. [<s:property/>]</a>
  14. </s:if>
  15. <s:else>//当前页的显示效果
  16. <font color="red"><s:property/></font>
  17. </s:else>
  18. </s:iterator>
  19. </s:bean>
  20.  
  21. 共大家参考。
  22.  
  23. .http://blog.csdn.net/hy0231/archive/2008/12/15/3522791.aspx
  24.  
  25. ,view
  26.  
  27. <s:url id="url_pre" value="queryMember.action">
  28. <s:param name="pageCur" value="pageCur-1"></s:param>
  29. </s:url>
  30. <s:url id="url_next" value="queryMember.action">
  31. <s:param name="pageCur" value="pageCur+1"></s:param>
  32. </s:url>
  33. <s:a href="%{url_pre}">上一页</s:a>
  34.  
  35. <s:iterator value="memberList" status="st">
  36. <s:url id="url" value="queryMember.action">
  37. <s:param name="pageCur" value="pageCur"/>
  38. </s:url>
  39. </s:iterator>
  40. <s:a href="%{url_next}">下一页</s:a>
  41.  
  42. ,Action
  43. public class MemberListAction
  44. {
  45. private int pageCur = ;
  46. private int totalCount = ;
  47. private int totalPage = ;
  48. private List memberList = null;
  49.  
  50. public String execute() throws Exception
  51. {
  52. MemberDAO dao = new MemberDAO();
  53.  
  54. /*这里是做分页的处理,有总记录数temp,总页数totalPage,当前页数pageCur
  55.  
  56. SysConstant.pageSize是一个常量,代表每页显示的记录数
  57.  
  58. */
  59. //总数量
  60. int temp = dao.getCount(id,name);
  61. setTotalCount(temp);
  62.  
  63. if((pageCur-)*SysConstant.pageSize >= temp)
  64. {
  65. pageCur = pageCur - ;
  66. }
  67. if(pageCur <= )
  68. {
  69. pageCur = ;
  70. }
  71. if(temp == )
  72. {
  73. totalPage = ;
  74. }
  75. else
  76. {
  77. totalPage =
  78. (int) Math.ceil((double) temp / SysConstant.pageSize);
  79. }
  80. /**/
  81. memberList = dao.getMember(id,name,pageCur);
  82. return "SUCC";
  83. }
  84.  
  85. ,DAO
  86.  
  87. 这里直接写SQL
  88.  
  89. MSQL的分页脚本:/*pageCur是当前页数,pageSize是每页显示记录数*/
  90.  
  91. select * from tmember limit ((pageCur-)*pageSize),(pageCur*pageSize)
  92.  
  93. ORACLE的分页脚本:
  94.  
  95. select * from (
  96. select a.*,rownum as a_rownum from (
  97. select * from tmember order by id
  98. ) a where rownum<=(pageCur*pageSize)
  99. ) b where b.a_rownum>(pageCur-)*pageSize

Struts2 实现分页的更多相关文章

  1. hibernate和struts2实现分页功能

    1.DAO层接口的设计,定义一个PersonDAO接口,里面声明了两个方法: public interface PersonDAO { public List<Person> queryB ...

  2. 5、Spring+Struts2+MyBatis+分页(mybatis无代理)增删改查

    1.创建如下项目结构 2.在src下的com.entity包下创建Dept.java package com.entity; /** * 部门表 * @author Holly老师 * */ publ ...

  3. struts2+hibernate(分页实现)

    //Dao类中实现了list集合和pagetotal方法 package zjf.strhib.Dao; import java.util.ArrayList; import java.util.Li ...

  4. struts2的分页标签

    1.准备tld文件 <?xml version="1.0" encoding="UTF-8" standalone="no"?> ...

  5. SSH:Struts2.2+Hibernate3.6+Spring3.1分页示例[转]

    参考资料 1 ssh分页(多个例子) http://useryouyou.iteye.com/blog/593954 2 ssh2分页例子 http://459104018-qq-com.iteye. ...

  6. pagebean pagetag java 后台代码实现分页 demo 前台标签分页 后台java分页

    java 后台代码实现分页 demo 实力 自己写的 标签分页 package com.cszoc.sockstore.util; import java.util.HashMap;import ja ...

  7. 用Hibernate和Struts2+jsp实现分页查询、修改删除

    1.首先用get的方法传递一个页数过去 2.通过Struts2跳转到Action 3.通过request接受主页面index传过的页数,此时页数是1, 然后调用service层的方法获取DAO层分页查 ...

  8. struts2+spring+hibernate 实现分页

    在这里要感谢下这位博友发表的博文 http://www.blogjava.net/rongxh7/archive/2008/11/29/243456.html 通过对他代码的阅读,从而自己实现了网页分 ...

  9. 分页进阶--ajax+jquery+struts2

    按照上次的分页逻辑,分页查询的业务大概需要几个“零件”:1.当前页:2.总页数:3.跳转页.后端需要处理的是:按照传送过来请求的页码返回相应地数据,并且接受初始化参数的请求:总页码.第一页的数据. 使 ...

随机推荐

  1. linux ----Inode的结构图

    http://www.ruanyifeng.com/blog/2011/12/inode.html 先看看Inode的结构图             再来了解一下文件系统如何存取文件的 1.根据文件名 ...

  2. vi模式

    保存命令 按ESC键 跳到命令模式,然后: :w 保存文件但不退出vi:w file 将修改另外保存到file中,不退出vi:w! 强制保存,不推出vi:wq 保存文件并退出vi:wq! 强制保存文件 ...

  3. WPF RichTextBox滚动条自动滚动实例、文本自动滚动实例

    说明:1.后台代码添加测试 数据 2.使用 richTextBox.ScrollToVerticalOffset()方法,滚动竖直方向滚动条位置 3.使用定时器DispatcherTimer,修改页面 ...

  4. EF FluentAPI映射一对多 关系时候报错

    提示很明显,不可为空的外键为空了,但是 问题是,我只是初始化 关系映射而已:见代码 public ColumnsCategoryMapConfiguration() { ToTable("C ...

  5. for循环,如何结束多层for循环

    采用标签方式跳出,指定跳出位置, a:for(int i=0;i<n;i++) { b:for(int j=0;j<n;j++) { if(n=0) { break a; } } }

  6. angularjs 遇到Error: [$injector:unpr] Unknown provider: tdpicnews-serviceProvider <- tdpicnews-service <- tdpic-controller 错误

    define(['modules/tdpic-module', 'services/news-service', 'utilities/cryto'], function (app) { 'use s ...

  7. 显示scrollbar

    修改CSS overflow的值 overflow: 参考MDN 例子: overflow: auto or scroll

  8. Java循环性能随笔

    for iterator做迭代循环性能最好 然后是foreach 然后是提前声明好变量的for循环 最后是每次都要计算集合size的for       package test;   import j ...

  9. 通过移位与或非运算获取整形最大值,最小值,以及获取输入的int类型整数的二进制表示

    以上是最终效果 实现类: package com.corejava.chap02; public class IntBin { private int value; public IntBin(int ...

  10. python sklearn模型的保存

    使用python的机器学习包sklearn的时候,如果训练集是固定的,我们往往想要将一次训练的模型结果保存起来,以便下一次使用,这样能够避免每次运行时都要重新训练模型时的麻烦. 在python里面,有 ...