`
huttoncs
  • 浏览: 200918 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

struts2分页查询

阅读更多
以下内容省去了有关service在spring配置文件中代码以及service Interface类,只写了service的实现类
1、用于分页查询的Action在struts配置文件中的代码片段:
<action name="adminAction" class="ssh.web.action.comm.AdminAction" method="query">
        <result name="success">/main/webapp/query/queryResult.jsp</result>
        </action>

2、Action的代码:

package ssh.web.action.comm;

//管理员action实现类

import java.util.List;

import ssh.comm.AdminService;
import ssh.comm.Page;

import com.opensymphony.xwork2.ActionSupport;

@SuppressWarnings({ "unchecked", "serial" })
public class AdminAction extends ActionSupport {

//查看管理员
private int pno; //查看的表单页数
private AdminService adminService;
private Page myPage;
private List mylist;
private String stuName; //传递的用户名

    public  String query()  {
    System.out.println("stuName= "+ stuName +"  pno= "+pno);
   
    if (pno == 0 ) {
pno = 1;
}
   
    adminService.init(pno);
    myPage = adminService.getPage();
//    mylist = adminService.getPage().getList();
   
        return SUCCESS;  

    }

public int getPno() {
return pno;
}

public void setPno(int pno) {
this.pno = pno;
}

public AdminService getAdminService() {
return adminService;
}

public void setAdminService(AdminService adminService) {
this.adminService = adminService;
}

public Page getMyPage() {
return myPage;
}

public void setMyPage(Page myPage) {
this.myPage = myPage;
}

public List getMylist() {
return mylist;
}

public void setMylist(List mylist) {
this.mylist = mylist;
}

public String getStuName() {
return stuName;
}

public void setStuName(String stuName) {
this.stuName = stuName;
}
   
   

}

3、adminService的实现类
package ssh.comm.impl;

import ssh.comm.AdminService;
import ssh.comm.Page;
import ssh.comm.PageDao;

public class AdminServiceImpl implements AdminService{
private PageDao pageDao;

public Page getPage() {
      return pageDao.getPage();
 
    }

    public void init(int pno) {

        String tableName="Student";
          pageDao.init(pno, tableName);
       

    }

public PageDao getPageDao() {
return pageDao;
}

public void setPageDao(PageDao pageDao) {
this.pageDao = pageDao;
}


   
   
}

4、pageDao的实现类
package ssh.comm.impl;

import java.sql.SQLException;
import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import ssh.comm.Page;
import ssh.comm.PageDao;

public class PageDaoImpl extends HibernateDaoSupport implements PageDao{

private String hql;
    public Page page;
    public int start;
   
    public void init(int start,String tableName){   
       page = new Page();
       this.hql = "from "+tableName;
       this.start = start;
       setRowCount(); //设置page的总数量
       setTotalPage(); //设置page的总页数
       setCurrentPage(); //设置page的当前页
       setPrePage(); //设置page的上一页
       setNextPage(); //设置page的下一页
       setPreOrNextBoolean(); //判断page是否有上一页或下一页

    }
   
    @SuppressWarnings("unchecked")
public Page getPage(){
       List list = (List)getHibernateTemplate().execute(new HibernateCallback(){
        public Object doInHibernate(Session session) throws HibernateException, SQLException {
         Query query = session.createQuery(hql);
         query.setFirstResult(getStartIndex());
         query.setMaxResults(page.getPageSize());

         return query.list();
        }  
       });
       page.setList(list);

       return page;

    }

    /**获得数据的总数量*/
    @SuppressWarnings("unchecked")
public int getRowCount(){
       List list = (List)getHibernateTemplate().find(hql);
       if(list.isEmpty()){
        return 0;
       }
       return list.size();

    }

    /**
     * 判断是否有下一页
     * */
    public void setPreOrNextBoolean() {
        if (page.getCurrentPage() <= 1) {
            page.setHasPreviousPage(false);
        } else {
            page.setHasPreviousPage(true);
        }

        if (page.getCurrentPage() >= page.getTotalPage()) {
            page.setHasNextPage(false);
        } else {
            page.setHasNextPage(true);
        }

    }

    /**
     * 设置当前查询页
     * */
    public void setCurrentPage() {
        if (start < 1) {
            page.setCurrentPage(1);
        }
        else if (start > page.getTotalPage()) {
            page.setCurrentPage(page.getTotalPage());
        }
        else {
        page.setCurrentPage(start);
}

    }

    /**
     * 设置上一页的页数
     * */
    public void setPrePage() {
        page.setPrePage(page.getCurrentPage() - 1);

    }

    /**
     * 设置下一页的页数
     * */
    public void setNextPage() {
        page.setNextPage(page.getCurrentPage() + 1);

    }

    /**
     * 计算总页数
     * */
    public void setTotalPage() {
        int rowCount = getRowCount();
        int pageSize = page.getPageSize();

        if (rowCount > pageSize) {
            if (rowCount % pageSize == 0) {
                page.setTotalPage(rowCount / pageSize);
            } else {
                page.setTotalPage(1 + (rowCount / pageSize));
            }
        } else {
            page.setTotalPage(1);
        }

    }

    public void setRowCount() {
        page.setRowCount(getRowCount());

    }

    /**
     * 设置查询数据的起始位置
     * */
    public int getStartIndex() {
        int startIndex = 0;
        if (start < 0) {
            startIndex = 0;
        } else {
            if (start > page.getTotalPage()) {
                startIndex = page.getPageSize() * (page.getTotalPage() - 1);
            } else {
                startIndex = page.getPageSize() * (start - 1);
            }
        }

        return startIndex;

    }
}

5、Page类对象
package ssh.comm;

import java.io.Serializable;
import java.util.List;

public class Page implements Serializable{

private static final long serialVersionUID = -7129370623545540245L;
private int pageSize;     //每页的数量
    private int totalPage;   //总页数
    private int rowCount; //总数量
    private int currentPage; //当前页数
    private int prePage; //上一页
    private int nextPage; //下一页
    private boolean hasNextPage; //是否有下一页
    private boolean hasPreviousPage; //是否有下一页
    @SuppressWarnings("unchecked")
private List list; //返回的数据

    public Page() {
        this.pageSize=6;
    }

    public int getPageSize() {
        return pageSize;
       
    }

    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;

    }

    public int getTotalPage() {
        return totalPage;
       
    }

    public void setTotalPage(int totalPage) {
        this.totalPage = totalPage;
       
    }

    public int getRowCount() {
        return rowCount;
       
    }

    public void setRowCount(int rowCount) {
        this.rowCount = rowCount;
       
    }

    public int getCurrentPage() {
        return currentPage;
       
    }

    public void setCurrentPage(int currentPage) {
        this.currentPage = currentPage;
       
    }

    public int getPrePage() {
        return prePage;
       
    }

    public void setPrePage(int prePage) {
        this.prePage = prePage;
       
    }

    public int getNextPage() {
        return nextPage;
       
    }

    public void setNextPage(int nextPage) {
        this.nextPage = nextPage;

    }

    public boolean isHasNextPage() {
        return hasNextPage;

    }

    public void setHasNextPage(boolean hasNextPage) {
        this.hasNextPage = hasNextPage;

    }

    public boolean isHasPreviousPage() {
        return hasPreviousPage;

    }

    public void setHasPreviousPage(boolean hasPreviousPage) {
        this.hasPreviousPage = hasPreviousPage;

    }


    @SuppressWarnings("unchecked")
public List getList() {
        return list;

    }

    @SuppressWarnings("unchecked")
public void setList(List list) {
        this.list = list;

    }
   
}

6、展示数据的jsp文件
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<%@ page language="java" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%>
<html>
  <head>
  <script src="/s2sh/main/webapp/res/jquery/jquery-1.3.2.min.js" type="text/javascript"></script>
  <link type="text/css" rel="stylesheet" href="/s2sh/main/webapp/css/editTable.css" />
  <script type="text/javascript" src="/s2sh/main/webapp/query/editTable.js"></script>
 
    <title>查询结果页面</title>
  </head>
<body>
查询结果<br>
<table  >
<thead>
<tr>
<th>学号</th>
<th>姓名</th>
<th>性别</th>
<th>出生年月</th>
<th>家庭住址</th>
</tr>
</thead>
<tbody>
<c:forEach items="${myPage.list}" var="student" >
<tr>
<td align="center">${student.stuId}</td>
<td align="center">${student.stuName}</td>
<td align="center">${student.stuSex}</td>
<td align="center">${student.stuBir }</td>
<td align="center">${student.stuAdd }</td>
</tr>
</c:forEach>
</tbody>
<tfoot>
<tr>
      <td colspan="6">
      <div class="message" > </div>
      <div class="pagebar list_page">
共<span class="rowCount"> ${myPage.rowCount} </span>条
<span class="currentPage">${myPage.currentPage} </span>/<span class="totalPage"> ${myPage.totalPage} </span>
<a class="firstPage" href="/s2sh/student/adminAction.action?pno=1">首页</a>
<a class="prePage" href="/s2sh/student/adminAction.action?pno=${myPage.prePage}" >上一页</a>
<a class="nextPage" href="/s2sh/student/adminAction.action?pno=${myPage.nextPage}" >下一页</a>
<a class="lastPage" href="/s2sh/student/adminAction.action?pno=${myPage.totalPage}">尾页</a>
跳转到第 <input type="text" class="currentPage inputW20" /> 页 <input type="hidden" class="pageSize"></input>
</div>
     </td>
   </tr>
</tfoot>
</table>

</body>
</html>




分享到:
评论

相关推荐

    struts2增删改查,struts2分页查询

    在探讨Struts2框架下的增删改查以及分页查询功能时,我们首先需要理解Struts2框架本身。Struts2是Apache软件基金会的一个开源Web应用框架,它继承了Struts1的一些特性,并在此基础上进行了大量的改进和扩展,提供了...

    Struts2实现分页查询

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

    Struts2分页源码技术的应用

    Struts2分页源码技术是Web开发中一个重要的实践,尤其是在处理大数据量时,能够有效地提高用户体验,避免一次性加载过多数据导致页面响应慢。在本文中,我们将深入探讨Struts2分页技术的实现原理、应用方法以及与...

    struts2增删改查,struts2分页查询.doc

    以上就是关于Struts2框架进行增删改查和分页查询的主要知识点,包括页面设计、表单提交、URL构造、配置文件和Action类的设计等方面。理解并熟练掌握这些内容对于开发基于Struts2的Web应用至关重要。

    Struts2自定义分页标签

    本资源详细介绍了如何在Struts2中自定义分页标签,使得开发过程更加便捷。 在Struts2中,分页通常涉及到以下几个关键步骤: 1. **创建Action类**:首先,你需要创建一个Action类,该类将处理用户的请求,包括获取...

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

    为了实现分页功能,我们需要在Struts2中定义Action类来接收用户的翻页请求,并通过Hibernate进行数据查询。具体步骤如下: 1. **定义PageTool类** 在Struts2中,我们通常会定义一个PageTool类来封装分页所需的信息...

    hibernate+struts2分页代码

    - 在Struts2中,Action类的属性可以用来接收前端传递的页码和每页大小,然后在Action中调用Hibernate的方法进行分页查询。 4. **前端展示**: - 前端页面通常使用JSP(JavaServer Pages)或者现代的前端框架(如...

    struts2分页显示

    该文档详细描述了struts2版本的分页显示,值得一读

    struts2分页效果第二种

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

    struts2+spring+hibernate分页查询

    **Struts2分页查询** Struts2提供了ActionSupport类,可以方便地实现分页功能。通过设置start(开始位置)和limit(每页条数)属性,可以实现对数据的分页展示。通常,需要在Action类中定义这两个属性,并在JSP页面...

    struts2分页代码的示例

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

    Struts2 分页实现

    在提供的"InterlibLog"文件中,可能包含了实现这个分页功能的具体代码示例,包括Action类、数据库查询逻辑、Struts2配置文件以及对应的JSP页面。通过分析和学习这些代码,你可以更深入地理解Struts2的分页实现过程。...

    MyBatis+struts2分页

    MyBatis增 删 改 查 struts2分页

    经典struts2分页方法 JAVA_WEB必备分页 源码

    经典Struts2分页方法是Java Web开发者需要掌握的核心技能之一。 分页的实现通常涉及到以下几个关键知识点: 1. **Action类**:在Struts2中,Action类是处理用户请求的中心。为了实现分页,我们需要创建一个包含...

    struts2实现分页

    ### Struts2 实现分页及 `&lt;s:bean&gt;` 标签详解 #### 一、Struts2 分页概述 在 Java Web 开发中,为了提高用户体验并减轻服务器负担,通常采用分页技术来展示数据。Struts2 框架提供了一套强大的工具和标签库来帮助...

    struts分页,数据查询资料

    这个“struts分页,数据查询资料”可能包含了如何在Struts框架下实现高效、灵活的分页查询方法。 首先,Struts框架的核心是Action类,它是业务逻辑和视图之间的桥梁。在实现分页功能时,我们需要创建一个Action类,...

    Struts带分页有查询

    在这个"Struts带分页有查询"的项目中,开发者利用Struts框架实现了带有分页功能的查询功能,使得用户能够方便地浏览大量数据而无需一次性加载所有结果,提升了用户体验。 分页是Web应用中常用的一种数据展示方式,...

    Struts2分页

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

    struts2分页系统

    这是struts的一个练习 这是struts的一个练习这是struts的一个练习这是struts的一个练习

    Struts2分页-自定义标签-类似百度分页

    Struts2分页是Web开发中的一个重要概念,它主要用于处理大量数据时,避免一次性加载所有数据导致页面响应慢或者浏览器崩溃。在这个场景中,我们提到的是使用自定义标签实现类似于百度分页的效果,这是一种常见的用户...

Global site tag (gtag.js) - Google Analytics