`

Struts2 实现分页

 
阅读更多
http://songshu0616.blog.163.com/blog/static/26250151201041731939595/

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 = 0;//总行数
        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(1);//取得总行数
            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=1;//中间变量
    private int k;//储存最大页面数
    private int pageNow=1; //页码数,初始为1
    private int pageSize = 5 ; //页面行数
    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 - 1) / pageSize;
        intPageCount = (intRowCount + pageSize - 1) / pageSize;//计算出总页数
        if(pageNow<1){
            pageNow=1;
        }
       
        if(pageNow > intPageCount)
             pageNow=intPageCount;
             i = (pageNow -1)*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>



效果:





2.
struts2分页导航
首页 | 上一页 1 [2] [3] [4] [5] [6] [7] [8] [9] [10] | 下一页 | 尾页  
上面效果中的 1 [2] [3] [4] [5] [6] [7] [8] [9] [10] 这个效果用struts2的bean标签可以完成。如下:

<s:bean name="org.apache.struts2.util.Counter" id="counter">
  <s:param name="first" value="1" />//循环开始 这用时要放变量来反映分页导航条的变化
  <s:param name="last" value="10" />//循环结束 这用时要放变量来反映分页导航条的变化


   <s:iterator>//循环分页导航

   <s:if test="pager.currentPage!=current-1">//不是当前页的显示效果
    <a href="http://songshu0616.blog.163.com/blog/<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>

共大家参考。


3.http://blog.csdn.net/hy0231/archive/2008/12/15/3522791.aspx

1,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="http://songshu0616.blog.163.com/blog/%{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="http://songshu0616.blog.163.com/blog/%{url_next}">下一页</s:a>

2,Action层

  public class MemberListAction
{
private int pageCur = 1;
private int totalCount = 0;
private int totalPage = 0;
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-1)*SysConstant.pageSize >= temp)
  {
   pageCur = pageCur - 1;
  }
  if(pageCur <= 0)
  {
   pageCur = 1;
  }
  if(temp == 0)
  {
   totalPage = 0;
  }
  else
  {
   totalPage =
   (int) Math.ceil((double) temp / SysConstant.pageSize);
  }
  /**/
  memberList = dao.getMember(id,name,pageCur);
  return "SUCC";
}

3,DAO层

这里直接写SQL。

MSQL的分页脚本:/*pageCur是当前页数,pageSize是每页显示记录数*/

select * from tmember  limit ((pageCur-1)*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-1)*pageSize
分享到:
评论

相关推荐

    Struts2实现分页查询

    用Struts2+mysql实现的简单信息录入,分页查询

    使用 struts2实现分页

    综上所述,使用Struts2和JSP实现分页主要涉及以下几个步骤: 1. 创建Action类,定义分页相关属性并实现获取分页数据的方法。 2. 在Struts2配置文件中配置Action。 3. 在JSP页面上使用Struts2标签库生成分页链接。 ...

    struts2实现分页

    Struts2实现分页 struts2分页技术,相当不错哟!值得一看

    jquery java struts2 实现分页 非常好看的分页

    总结来说,实现“jQuery Java Struts2 实现分页”涉及到前后端的协同工作:前端使用jQuery和其分页插件处理用户交互,样式通过CSS自定义;后端使用Java和Struts2框架处理分页逻辑,与数据库进行交互,返回所需数据。...

    Struts2实现分页

    struts实现数据库添删改查,以及分页 ArrayList&lt;Users&gt; list; UserService service; Users user; Pager page=new Pager(); public Pager getPage() { return page; } public void setPage(Pager page) { ...

    STRUTS2+HIBERNATE详细的分页实现代码详细的分页实现代码

    STRUTS2+HIBERNATE分页 实现代码详细的分页实现代码实现代码详细的分页实现代码实现代码详细的分页实现代码实现代码详细的分页实现代码

    struts2实现分页显示

    下面将详细讲解如何在Struts2框架下实现分页显示。 首先,我们需要理解分页的基本概念。分页是将大量数据分为多个部分(页)进行展示,用户可以逐页浏览,而不是一次性显示所有记录。这通常涉及到两个关键参数:...

    struts2分页代码的示例

    下面是我用Struts2做的一个分页显示实例,基本的思路是:把数据库表中的每一行数据封装成一个对象,用一个返回类型为List的方法返回这些对象,接着在Struts2的action里面定义一个List属性,用这个List来接收从数据库...

    Struts2实现分页代码

    下面是我用Struts2做的一个分页显示实例,基本的思路是:把数据库表中的每一行数据封装成一个对象,用一个返回类型为List的方法返回这些对象,接着在Struts2的action里面定义一个List属性,用这个List来接收从数据库...

    struts1.2实现分页

    本教程将深入讲解如何在Struts1.2框架中实现分页功能。 一、理解分页原理 分页的基本思想是将数据库中的数据分割成若干个部分,每次只加载一部分到前端展示,用户可以通过点击页码或导航按钮来切换不同的数据页。...

    struts2分页效果第二种

    本文将详细介绍Struts2实现分页效果的第二种方法。 在Struts2中,实现分页通常涉及以下几个关键步骤: 1. **模型(Model)**:首先,我们需要一个实体类来存储待分页的数据,例如`User`。然后,创建一个`PageBean`类...

    Struts2自定义分页标签

    通过自定义分页标签,Struts2开发者能够轻松实现定制化分页,并保持代码的整洁和可维护性。这种方式避免了在多个JSP页面中重复编写分页逻辑,提高了代码复用性,同时降低了出错的可能性。 总之,本资源提供的Struts...

    Struts2 分页实现

    本实践项目旨在展示如何在Struts2中实现分页功能,适用于初学者学习和提升技能。 首先,我们来了解分页的基本原理。分页是将大量数据分成若干小部分,每次只加载一部分到页面上,用户可以通过导航按钮来浏览其他...

    struts2 的分页

    下面将详细介绍如何在Struts2框架中实现分页。 首先,理解分页的基本概念。分页通常涉及两个关键部分:当前页码和每页显示的数据数量。根据这些信息,后端会计算出需要查询的数据范围,然后返回给前端进行展示。在...

    用struts实现的分页

    下面我们将深入探讨如何在Struts框架下实现分页功能。 首先,我们需要理解分页的基本概念。分页是指将一个大数据集合分割成多个小部分,每次只显示一部分,用户可以通过翻页来查看其他部分。在Web应用中,这通常...

    struts2.0实现的数据分页实现及实现分页步骤

    你需要创建一个Action类,比如`PaginationAction`,在这个类中实现分页逻辑。Action类通常包含获取数据的方法,如`loadData`,该方法将根据当前页码和每页大小计算SQL的LIMIT子句,并调用`DbPool`执行查询。 4. **...

    Struts2分页

    Struts2实现分页功能,代码完整简洁易懂,可以直接拿去使用,欢迎拍砖

    struts2+MySQL分页.zip

    2. 编写设置分页器其他参数的函数  主要参数有以下几个:  总记录条数  总页数  当前页号:现在显示的页数  每页显示的记录条数  当前页开始行(第一行是0行)  第一页页号  最后页页号  下一页页号  上一...

    使用struts实现分页

    3. **.struts-config.xml配置文件**:在实现分页功能时,需要在项目的配置文件`struts-config.xml`中定义Action以及相关的ActionForm和ActionForward。ActionForm用于封装用户请求的数据,ActionForward则定义了请求...

Global site tag (gtag.js) - Google Analytics