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

struts2 分页

阅读更多
今天看到某人写的分页类,结果发现批人家的人不少,没有必要,好的东西吸收学习,感觉不实用可以不用,何必发帖子挖苦人家。我前段时间也自己设计了一个分页的方法,绝对是自己想到的,如果网上有一样的,说明大家都思考了,有可取度,提供给大家参考。
首先写了一个分页的类,其实只有主要属性的setter和getter方法
/**
* 分页类
* @author qinglin876
*
*/
public class Pagination {
private int start;
//一次取得的数量
private int size;
//要取得页数
private int currentPage = 1;
//总的记录页数
private int totalPage = 0;
//总的记录条数
private int totalRecord;
public int getTotalRecord() {
return totalRecord;
}
public void setTotalRecord(int totalRecord) {
this.totalRecord = totalRecord;
}
public Pagination(){

}
public Pagination(int size){
this.size = size;
}
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
public int getStart() {
return start;
}
public void setStart(int start) {
this.start = start;
}
public int getCurrentPage() {
return currentPage;
}
public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}
public int getTotalPage() {
return totalPage;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}

}

另外pagination.jsp由pagination类填充

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%@ taglib prefix="s" uri="/struts-tags"%>
<SCRIPT type="text/javascript">

      function trim(str){
return str.replace(/(^\s*)|(\s*$)/g, "");
}

function selectPage(input){

var value = trim(input.value);
if(value == ""){
return;
}

if(/\d+/.test(value)){

input.form.submit();
return;
}
alert("请输入正确的页数");
input.focus();

}
   
</SCRIPT>
<div class="pagech">

<s:if test="pagination.totalPage != 0">
<s:url action="%{#request.url}" id="first">
<s:param name="pagination.currentPage" value="1"></s:param>
</s:url>
<s:url action="%{#request.url}" id="next"  >
<s:param name="pagination.currentPage"
value="pagination.currentPage+1">
</s:param>
</s:url>
<s:url action="%{#request.url}" id="prior" >
<s:param name="pagination.currentPage"
value="pagination.currentPage-1"></s:param>
</s:url>
<s:url action="%{#request.url}" id="last">
<s:param name="pagination.currentPage" value="pagination.totalPage"></s:param>
</s:url>
<s:if test="pagination.currentPage == 1">
<span class="current">首页</span>
<span class="current">上一页</span>
</s:if>
<s:else>
<s:a href="%{first}">首页</s:a>
<s:a href="%{prior}">上一页</s:a>
</s:else>
<s:if
test="pagination.currentPage == pagination.totalPage || pagination.totalPage == 0">
<span class="current">下一页</span>
<span class="current">末页</span>
</s:if>
<s:else>
<s:a href="%{next}">下一页</s:a>&nbsp;&nbsp;
                  <s:a href="%{last}">末页</s:a>
</s:else>
<span class="jumplabel">跳转到</span>
<s:form action="%{#request.url}" theme="simple"
cssStyle="display:inline">
<s:hidden name="pagination.totalPage" value="%{pagination.totalPage}"></s:hidden>
<input type="text" name="pagination.currentPage" size="2"
onblur="selectPage(this)" />
</s:form>

<span class="jumplabel">页</span>
<span class="jumplabel">共<s:property
value="pagination.totalRecord" />条</span>
<span class="jumplabel">当前是第<s:property
value="pagination.currentPage" />/<s:property value="pagination.totalPage"/>页</span>


</s:if>

</div>

用的时候,在页面include进去,注意上面的"%{#request.url}",即是在struts2的action里面有一个setter和getter方法,下面看action中的某个方法
public String showNotices() throws Exception{

if(tip != null){
tip = new String(tip.getBytes("iso8859-1"),"utf-8");
}
if(notices == null)
this.notices = new ArrayList<Notice>();
int size = Integer.valueOf(this.getText("per_page_notice_size"));
if (pagination == null) {
pagination = new Pagination(size);
}
pagination.setSize(size);
if (pagination.getCurrentPage() <= 0) {
pagination.setCurrentPage(1);
}
if (pagination.getTotalPage() != 0
&& pagination.getCurrentPage() > pagination.getTotalPage()) {
pagination.setCurrentPage(pagination.getTotalPage());
}
url = "goto_showNotices.action"; this.notices.addAll(this.noticeDAO.showAll(pagination));
if(this.notices.size() == 0 && pagination.getCurrentPage() != 1){
pagination.setCurrentPage(pagination.getCurrentPage()-1);
this.notices.addAll(this.noticeDAO.showAll(pagination));
}
return "success";
}

在上面的this.noticeDAO.showAll(pagination))中填充pagination,具体如下
/*
* 显示所有的通告
* @see com.qinglin.dao.NoticeDAO#showAll(com.qinglin.util.Pagination)
*/
@SuppressWarnings("unchecked")
public List<Notice> showAll(final Pagination pagination) {
String hql = "from Notice as n";
this.getHibernateTemplate().setCacheQueries(true);
int totalRecord = ((Long) this.getSession().createQuery(
"select count(*) " + hql).uniqueResult()).intValue();
int totalPage = totalRecord % pagination.getSize() == 0 ? totalRecord
/ pagination.getSize() : totalRecord / pagination.getSize() + 1;
pagination.setTotalRecord(totalRecord);
pagination.setTotalPage(totalPage);
hql += " order by n.add_date desc";
final String hql1 = hql;

return (List<Notice>) this.getHibernateTemplate().execute(
new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query query = session.createQuery(hql1);
query.setFirstResult((pagination.getCurrentPage() - 1)
* pagination.getSize());
query.setMaxResults(pagination.getSize());
return query.list();
}
});
}


基本上就这些,当然请求的action里面需要设置pagination的setter和getter方法
这个分页方法特点是简单,只需在action中指明请求的url,用某种方法填充pagination,在显示的页面包含pagination.jsp即可。
分享到:
评论

相关推荐

    struts2增删改查,struts2分页查询

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

    Struts2分页源码技术的应用

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

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

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

    Struts2分页

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

    struts2分页显示

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

    hibernate+struts2分页代码

    【hibernate+struts2分页代码】是关于如何在Java Web开发中结合Hibernate ORM框架和Struts2 MVC框架实现数据分页的功能。在Web应用程序中,分页是提高用户体验的重要手段,它允许用户逐步浏览大量数据,而无需一次性...

    struts2分页效果第二种

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

    Struts2分页(含mysql)

    Struts2分页技术是Java Web开发中一种常见的数据展示方式,它允许用户在大量数据中按需加载和浏览信息,提升用户体验。本教程将详细讲解如何在Struts2框架中实现分页功能,并结合MySQL数据库进行数据操作。 首先,...

    MyBatis+struts2分页

    MyBatis增 删 改 查 struts2分页

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

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

    Struts2分页方法

    ### Struts2分页方法详解 #### 知识点一:Struts2框架与分页概念 Struts2是Apache软件基金会的一个开源Web应用框架,它继承了Struts1的优点并改进了许多不足之处,提供了更丰富的插件和标签库,支持拦截器、结果...

    JSP Struts2 分页 导出Excel

    **JSP Struts2 分页 导出Excel** 在Web开发中,经常需要处理大量数据,这时分页显示和导出功能就显得尤为重要。JSP(JavaServer Pages)和Struts2作为Java Web开发中的常见技术,可以帮助我们构建动态、交互的网页...

    Struts2自定义分页标签

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

    Struts2分页程序

    根据提供的信息,我们可以深入探讨如何在Struts2框架中实现分页功能。Struts2是一个开源的、用于创建企业级Java Web应用的框架。它基于MVC(模型-视图-控制器)架构模式,能够帮助开发者高效地组织代码并简化Web开发...

    struts2分页系统

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

    实用的struts2分页

    ### 实用的Struts2分页技术解析与实践 #### 引言 在Web开发中,数据展示往往需要进行分页处理,以提高用户体验和服务器性能。Struts2框架提供了强大的MVC架构支持,其中分页功能是其常用且实用的一部分。本文将深入...

    struts2分页更容易简单很快学会

    Struts2 分页技术是Java Web开发中常用的一种方法,用于在大量数据列表中实现高效、用户友好的浏览体验。本篇文章将详细讲解如何在Struts2框架中结合Hibernate ORM库实现分页功能。 首先,我们需要理解分页的基本...

    struts2分页模型

    Struts2分页模型是Java Web开发中一种常见的技术,用于在用户界面展示大量数据时进行数据的组织和浏览。分页的主要目的是提高用户体验,避免一次性加载过多数据导致页面响应变慢或者内存压力过大。本篇文章将深入...

Global site tag (gtag.js) - Google Analytics