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

package com.sy.dao;

import java.util.List;

import com.sy.vo.News;

public interface NewsDao {

    public List<News> queryByPage(int pageSize,int pageNow);

    public int count();

}

NewsDaoImpl.java

package com.sy.dao.impl;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List; import com.sy.dao.NewsDao;
import com.sy.util.DataBaseConnection;
import com.sy.util.StringUtil;
import com.sy.vo.News; public class NewsDaoImpl implements NewsDao { //获取分页新闻列表
@SuppressWarnings("unchecked")
public List<News> queryByPage(int i,int pageSize){
List<News> newss=new ArrayList(); PreparedStatement pstmt = null ;
String sql = null ;
ResultSet rs = null ;
DataBaseConnection dbc = null ;
dbc = new DataBaseConnection() ; sql = "select * from struts2new order by id asc limit " + i + "," + pageSize;
try
{ pstmt = dbc.getConnection().prepareStatement(sql); rs = pstmt.executeQuery() ;
while(rs.next())
{
News news=new News();
news.setId(rs.getInt("id"));
news.setName(rs.getString("name"));
news.setTitle(rs.getString("title"));
news.setDate(rs.getString("date"));
news.setEmail(rs.getString("email"));
news.setContent(rs.getString("content"));
i++;
newss.add(news);
}
rs.close() ;
pstmt.close() ;
}
catch(Exception e)
{
System.out.println(e) ;
}
finally
{
dbc.close();
}
return newss;
}
//查询总行数
public int count() {
int intRowCount = ;//总行数
PreparedStatement pstmt = null ;
String sql = null ;
ResultSet rs = null ;
DataBaseConnection dbc = null ;
dbc = new DataBaseConnection() ; sql = "select count(id) from struts2new order by id asc";
try
{
pstmt = dbc.getConnection().prepareStatement(sql);
rs = pstmt.executeQuery();
rs.next();//游标指向第一行
intRowCount=rs.getInt();//取得总行数
rs.close() ;
pstmt.close() ;
}
catch(Exception e)
{
System.out.println(e) ;
}
finally
{
dbc.close();
}
return intRowCount;
}
}

ListAction.java

package com.sy.action;

import java.util.List;

import com.opensymphony.xwork2.ActionSupport;
import com.sy.dao.AdminDao;
import com.sy.dao.NewsDao;
import com.sy.dao.impl.AdminDaoImpl;
import com.sy.dao.impl.NewsDaoImpl;
import com.sy.vo.Admin;
import com.sy.vo.News; public class ListAction extends ActionSupport { private static final long serialVersionUID = 1L;
int i=;//中间变量
private int k;//储存最大页面数
private int pageNow=; //页码数,初始为1
private int pageSize = ; //页面行数
private int intRowCount;//总行数
private int intPageCount;//总页数
private Admin admin;
private List<Admin> Adminss;
private News news;
@SuppressWarnings("unchecked")
private List<News> Newss; private int id;
private int aid; public News getNews() {
return news;
} public void setNews(News news) {
this.news = news;
} @SuppressWarnings("unchecked")
public List<News> getNewss() {
return Newss;
}
public void setNewss(List<News> newss) {
Newss = newss;
} public int getId() {
return id;
} public void setId(int id) {
this.id = id;
}
public Admin getAdmin() {
return admin;
} public void setAdmin(Admin admin) {
this.admin = admin;
} public List<Admin> getAdminss() {
return Adminss;
} public void setAdminss(List<Admin> adminss) {
Adminss = adminss;
}
public int getAid() {
return aid;
} public void setAid(int aid) {
this.aid = aid;
} public int getPageNow() {
return pageNow;
} public void setPageNow(int pageNow) {
this.pageNow = pageNow;
} public int getPageSize() {
return pageSize;
} public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getIntRowCount() {
return intRowCount;
} public void setIntRowCount(int intRowCount) {
this.intRowCount = intRowCount;
} public int getIntPageCount() {
return intPageCount;
} public void setIntPageCount(int intPageCount) {
this.intPageCount = intPageCount;
}
public int getK() {
return k;
} public void setK(int k) {
this.k = k;
}
@SuppressWarnings("unchecked")
@Override
//显示新闻列表
public String execute() throws Exception { NewsDao npage=new NewsDaoImpl();
intRowCount=npage.count();
k=(intRowCount + pageSize - ) / pageSize;
intPageCount = (intRowCount + pageSize - ) / pageSize;//计算出总页数
if(pageNow<){
pageNow=;
} if(pageNow > intPageCount)
pageNow=intPageCount;
i = (pageNow -)*pageSize;
NewsDao nlist=new NewsDaoImpl();
if(null!=nlist.queryByPage(i,pageSize)){
Newss = nlist.queryByPage(i,pageSize);
return SUCCESS;
}else{
return "failure";
}
}
..
}

struts.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="news" extends="struts-default"> ..
<!-- 查看新闻列表 -->
<action name="list" class="com.sy.action.ListAction">
<result>/listNews.jsp</result>
<result name="failure">/Showfailure.jsp</result>
</action> </package>
</struts>

显示页面listNews.jsp

<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
</head>
<body> .. <center>
共<s:property value="intRowCount"/>记录&nbsp;&nbsp;
第<s:property value="pageNow"/>页&nbsp;&nbsp;
<s:url id="url_pre" value="list.action">
<s:param name="pageNow" value="pageNow-1"></s:param>
</s:url> <s:url id="url_next" value="list.action">
<s:param name="pageNow" value="pageNow+1"></s:param>
</s:url>
<s:iterator value="Newss" status="status">
<s:url id="url" value="list.action">
<s:param name="pageNow" value="pageNow"/>
</s:url>
</s:iterator>
<s:if test="pageNow==1">
<s:a href="%{url_pre}">最前一页</s:a>
</s:if>
<s:else>
<s:a href="%{url_pre}">上一页</s:a>
</s:else>
<s:if test="pageNow==k">
<s:a href="%{url_next}">最后一页</s:a>
</s:if>
<s:else>
<s:a href="%{url_next}">下一页</s:a>
</s:else>
</center>
</body>
</html>

效果:

struts2分页导航

首页 | 上一页  [] [] [] [] [] [] [] [] [] | 下一页 | 尾页  
上面效果中的 [] [] [] [] [] [] [] [] [] 这个效果用struts2的bean标签可以完成。如下: <s:bean name="org.apache.struts2.util.Counter" id="counter">
<s:param name="first" value="" />//循环开始 这用时要放变量来反映分页导航条的变化
<s:param name="last" value="" />//循环结束 这用时要放变量来反映分页导航条的变化 <s:iterator>//循环分页导航 <s:if test="pager.currentPage!=current-1">//不是当前页的显示效果
<a href="<s:property value="#
URL"/>&pageNum=<s:property/>">
[<s:property/>]</a>
</s:if>
<s:else>//当前页的显示效果
<font color="red"><s:property/></font>
</s:else>
</s:iterator>
</s:bean> 共大家参考。 .http://blog.csdn.net/hy0231/archive/2008/12/15/3522791.aspx ,view层 <s:url id="url_pre" value="queryMember.action">
<s:param name="pageCur" value="pageCur-1"></s:param>
</s:url>
<s:url id="url_next" value="queryMember.action">
<s:param name="pageCur" value="pageCur+1"></s:param>
</s:url>
<s:a href="%{url_pre}">上一页</s:a> <s:iterator value="memberList" status="st">
<s:url id="url" value="queryMember.action">
<s:param name="pageCur" value="pageCur"/>
</s:url>
</s:iterator>
<s:a href="%{url_next}">下一页</s:a> ,Action层
public class MemberListAction
{
private int pageCur = ;
private int totalCount = ;
private int totalPage = ;
private List memberList = null; public String execute() throws Exception
{
MemberDAO dao = new MemberDAO(); /*这里是做分页的处理,有总记录数temp,总页数totalPage,当前页数pageCur SysConstant.pageSize是一个常量,代表每页显示的记录数 */
//总数量
int temp = dao.getCount(id,name);
setTotalCount(temp); if((pageCur-)*SysConstant.pageSize >= temp)
{
pageCur = pageCur - ;
}
if(pageCur <= )
{
pageCur = ;
}
if(temp == )
{
totalPage = ;
}
else
{
totalPage =
(int) Math.ceil((double) temp / SysConstant.pageSize);
}
/**/
memberList = dao.getMember(id,name,pageCur);
return "SUCC";
} ,DAO层 这里直接写SQL。 MSQL的分页脚本:/*pageCur是当前页数,pageSize是每页显示记录数*/ select * from tmember limit ((pageCur-)*pageSize),(pageCur*pageSize) ORACLE的分页脚本: select * from (
select a.*,rownum as a_rownum from (
select * from tmember order by id
) a where rownum<=(pageCur*pageSize)
) 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. 全面分析 Spring 的编程式事务管理及声明式事务管理--转

    开始之前 关于本教程 本教程将深入讲解 Spring 简单而强大的事务管理功能,包括编程式事务和声明式事务.通过对本教程的学习,您将能够理解 Spring 事务管理的本质,并灵活运用之. 先决条件 本 ...

  2. Execution Contexts (执行上下文)

    本章我们一起讨论一下ECMAScript的执行上下文及相关可执行代码的各种类型.so...什么是执行上下文?我们来看看定义: 每次当控制器转到ECMAScript可执行代码的时候, 即会进入到一个执行 ...

  3. 你的网站为什么会慢?——用YSlow为你的网站提速

    在前面的文章我翻译的文章中分别从内容.服务器.JavaScript和CSS.图片.Coockies和移动应用等几个方面总结了34条提高网站性能的黄金守则,但是这些守则中,有一些是不常用到的,若非有实力 ...

  4. Linux - CentOS6.5服务器搭建与初始化配置详解(上)

    1.新建一个虚拟机 选择典型 单机下一步 p.MsoNormal,li.MsoNormal,div.MsoNormal { margin: 0cm 0cm 0.0001pt; text-align: ...

  5. 分享一下自己在用的CSS样式重置代码

    通过借鉴网上大牛们的经验和自己在工作中碰到的一些问题,总结出了这些比较常用的CSS样式重置的代码: @charset "utf-8"; /* 防止用户自定义背景颜色对网页的影响,添 ...

  6. hibernate对象关系映射( 一对一,一对多,多对一,多对多的单向,双向映射 ——)

    对象之间的关系: 关系映射之间的关系只的是对象之间的关系,并不指数据库表的关系(外键关系)这儿解决的问题是当对象之间的关系之一时,数据库表该如何映射,编程上如何对待. 一对一(主键关联,和单向的外键关 ...

  7. C#Socket编程socket.Connect权限出错问题及解决

    最近使用Vs2010编写Socket程序,客户端在调用socket.Connect()时,总是出现: 请求“System.Net.SocketPermission, System, Version=4 ...

  8. 记一次网站服务器迁移(my)

    遇到的难题: 基本没有遇到太大的问题,因为服务器环境是配好的阿里云环境,最后再nginx的rewrite配置遇到了一点问题,最后也算解决. 收获小点: 1) vim替换命令: 利用 :s 命令可以实现 ...

  9. 把cygwin加入右键菜单

    第一步:修改windows注册表 1·开始->运行(或者win键+R),输入REGEDIT,回车,打开注册表编辑器: 2·找到HKEY_CLASSES_ROOT\Directory\Backgr ...

  10. CI框架多目录设置

    1,设置目的,前台与后台实现独立目录管理 2.通过http://www.myci.com  访问前台,通过http://www.myci.com/admin 访问后台,   多目录的意思是指在同一个网 ...