`
devil13th
  • 浏览: 43315 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

struts2 分页

阅读更多

作者:ThirdteenDevil 十三妖

qq : 181907667

 

 

如果用的是struts1 请见struts1分页的文章 此片文章是介绍struts2分页的

 

思路:struts2用的是Action ,并没有ActionForm,所有表单的信息都封装在Action中,所以建立一个分页的信息类Page.java 记录当前页,最大页,每页记录数等信息,然后在action引入的service中进行分页就可以了 

 

添加Page类

package com.thd.bean;

public class Page {
	
	public Page(){
		this.currentPage = 1;
	}
	
	//最大页数
	private int maxPage;
	//当前页
	private int currentPage;
	//一页记录数
	private int pageSize;
	//最大记录数
	private int listSize;
	
	public int getMaxPage() {
		return maxPage;
	}
	public void setMaxPage(int maxPage) {
		this.maxPage = maxPage;
	}
	public int getCurrentPage() {
		return currentPage;
	}
	public void setCurrentPage(int currentPage) {
		this.currentPage = currentPage;
	}
	public int getPageSize() {
		return pageSize;
	}
	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}
	public int getListSize() {
		return listSize;
	}
	public void setListSize(int listSize) {
		this.listSize = listSize;
	}
}

 

 

拷贝page.jsp到项目中

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ include file="tag.jsp"%>
<style type="text/css">
#dividPage{height:20px;line-height:20px;text-align:right;margin-top:5px;}
#pages a{display:inline-block;border-bottom:2px solid #ccc;text-decoration:none;margin-right:5px;height:12px;line-height:12px;padding:0px 2px;}
#pages a.current{border-bottom:0px;font-weight:bold;}
#pages a:link{color:#aaa;}
#pages a:visited{color:#aaa;}
#pages a:hover{color:#aaa;}
#pages a:active{color:#aaa;}
#pages a:link.current{color:#333;}
#pages a:visited.current{color:#333;}
#pages a:hover.current{color:#333;}
#pages a:active.current{color:#333;}
</style>
<div id="dividPage">
共<span id="listSize"></span>条记录
<span id="pages">
</span>
<s:hidden name="page.currentPage" id="cp"></s:hidden>
共<span id="maxPage"></span>页
当前第<span id="currentPage"></span>页
</div>
<script type="text/javascript">
var maxPage = <s:property value="page.maxPage"/>;
var listSize = <s:property value="page.listSize"/>;
var currentPage = <s:property value="page.currentPage"/>;
var formId = "<%= request.getParameter("formId") %>";
document.getElementById("maxPage").innerHTML = maxPage;
document.getElementById("listSize").innerHTML = listSize;
document.getElementById("currentPage").innerHTML = currentPage;
function formSMT(cp){
	document.getElementById("cp").value = cp;
	document.getElementById(formId).submit();
}
for(var i = 1 ; i <= maxPage ; i++){
	var lk = document.createElement("a");
	lk.setAttribute("cp",i);
	lk.innerHTML = i;
	lk.href = "#";
	document.getElementById("pages").appendChild(lk);
	if (i == currentPage){
		lk.className = "current";		
	}else{
		lk.onclick = function(){
			formSMT(this.getAttribute("cp"));
		}
	}
}
</script>

			

 

在需要分页的页面中引入page.jsp

<jsp:include page="../pub/page.jsp">
	<jsp:param name="formId" value="materialQueryForm"/>
</jsp:include>

 其中materialQueryForm是查询表单的id,点击分页的页码后js调用这个表单对象的submit()方法

 

 

DAO类

package com.thd.dao;

import java.io.Serializable;
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;

public class DaoImpl extends HibernateDaoSupport {

	public void save(Object obj) {
		this.getHibernateTemplate().save(obj);
	};

	public void update(Object obj) {
		this.getHibernateTemplate().update(obj);
	}

	public void delete(Object obj) {
		this.getHibernateTemplate().delete(obj);
	}
	
	public List findByHql(String hql){
		return this.getHibernateTemplate().find(hql);
	}
	
	public Object findById(Class c,Serializable id){
		return this.getHibernateTemplate().get(c, id);
	}
	

	public List findBySql(final String sql) {
		return this.getHibernateTemplate().executeFind(new HibernateCallback() {
			public Object doInHibernate(Session session) {
				Query query = session.createSQLQuery(sql);
				return query.list();
			}
		});
	}

	public void executeSql(final String sql) {
		this.getHibernateTemplate().executeFind(new HibernateCallback() {
			public Object doInHibernate(Session session) {
				Query query = session.createSQLQuery(sql);
				query.executeUpdate();
				return null;
			}
		});
	}
	
	public List findPageSql( final String sql,final int currpage, final int rowsNum, final int maxResult) {
		return this.getHibernateTemplate().executeFind(new HibernateCallback() {
			public Object doInHibernate(Session s) throws HibernateException,
					SQLException {
								Query query = s.createSQLQuery(sql);
				
				if (rowsNum != -1) {
					query.setFirstResult((currpage - 1) * maxResult);
					query.setMaxResults(maxResult);
				}
				List list = query.list();
				return list;
			}
		});
	}

}

	

 

 

service类

public List queryMaterial(Tit tit,Page page){
		String sql = "select "+
		"t.id," +
		"t.tit," + 
		"t.des," +
		"t.idate," +
		"d.tname " +
		" from tit t left join dic d on t.dic = d.id where 1=1 ";
		
		if(tit != null){
			if((tit.getTit() != null) && !"".equals(tit.getTit())){
				sql += " and t.tit like '%" + tit.getTit() + "%'";
			}
			
			if(tit.getDic() != null){
				sql += " and d.id = " + tit.getDic();
			}
		}
		sql += " order by t.idate desc";
		
		page.setPageSize(5);//设置每一页的条目数量
		List l = this.getDao().findBySql(sql);
		  if(l != null){
		        int rowsNum = l.size();   
		        int temp = rowsNum % page.getPageSize(); //取模   
		        int pageNum = 0;   
		        if (temp > 0) {//如果有余数   
		            pageNum = rowsNum / page.getPageSize() + 1;   
		        } else if (temp == 0)   
		            pageNum = rowsNum / page.getPageSize();   
		        page.setListSize(rowsNum);//设置总记录条数
		        page.setMaxPage(pageNum);// 设置最大页数
		       System.out.println(page.getListSize());
		       System.out.println(page.getMaxPage());
		        return dao.findPageSql(sql, page.getCurrentPage(), rowsNum, page.getPageSize());   
		    }else{   
		        return null;   
		    }  
		
	}
	

 

 

Action中加入Page类

private Page page;

public Page getPage() {
	return page;
}

public void setPage(Page page) {
	this.page = page;
}

 

Action查询部分代码

public String materialQuery(){
		//如果不是表单提交要判断page对象是不是为空
    	if(null == page){
    		page = new Page();
    	}
    	List l = this.getMaterialService().queryMaterial(tit,page);
    	this.getRequest().setAttribute("l",l);
    	return "materialQuery";
}

 

 

 

分享到:
评论

相关推荐

    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