作者: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是Apache软件基金会的一个开源Web应用框架,它继承了Struts1的一些特性,并在此基础上进行了大量的改进和扩展,提供了...
Struts2分页源码技术是Web开发中一个重要的实践,尤其是在处理大数据量时,能够有效地提高用户体验,避免一次性加载过多数据导致页面响应慢。在本文中,我们将深入探讨Struts2分页技术的实现原理、应用方法以及与...
经典Struts2分页方法是Java Web开发者需要掌握的核心技能之一。 分页的实现通常涉及到以下几个关键知识点: 1. **Action类**:在Struts2中,Action类是处理用户请求的中心。为了实现分页,我们需要创建一个包含...
Struts2实现分页功能,代码完整简洁易懂,可以直接拿去使用,欢迎拍砖
该文档详细描述了struts2版本的分页显示,值得一读
【hibernate+struts2分页代码】是关于如何在Java Web开发中结合Hibernate ORM框架和Struts2 MVC框架实现数据分页的功能。在Web应用程序中,分页是提高用户体验的重要手段,它允许用户逐步浏览大量数据,而无需一次性...
本文将详细介绍Struts2实现分页效果的第二种方法。 在Struts2中,实现分页通常涉及以下几个关键步骤: 1. **模型(Model)**:首先,我们需要一个实体类来存储待分页的数据,例如`User`。然后,创建一个`PageBean`类...
Struts2分页技术是Java Web开发中一种常见的数据展示方式,它允许用户在大量数据中按需加载和浏览信息,提升用户体验。本教程将详细讲解如何在Struts2框架中实现分页功能,并结合MySQL数据库进行数据操作。 首先,...
MyBatis增 删 改 查 struts2分页
Struts2分页是Web开发中的一个重要概念,它主要用于处理大量数据时,避免一次性加载所有数据导致页面响应慢或者浏览器崩溃。在这个场景中,我们提到的是使用自定义标签实现类似于百度分页的效果,这是一种常见的用户...
### Struts2分页方法详解 #### 知识点一:Struts2框架与分页概念 Struts2是Apache软件基金会的一个开源Web应用框架,它继承了Struts1的优点并改进了许多不足之处,提供了更丰富的插件和标签库,支持拦截器、结果...
**JSP Struts2 分页 导出Excel** 在Web开发中,经常需要处理大量数据,这时分页显示和导出功能就显得尤为重要。JSP(JavaServer Pages)和Struts2作为Java Web开发中的常见技术,可以帮助我们构建动态、交互的网页...
本资源详细介绍了如何在Struts2中自定义分页标签,使得开发过程更加便捷。 在Struts2中,分页通常涉及到以下几个关键步骤: 1. **创建Action类**:首先,你需要创建一个Action类,该类将处理用户的请求,包括获取...
根据提供的信息,我们可以深入探讨如何在Struts2框架中实现分页功能。Struts2是一个开源的、用于创建企业级Java Web应用的框架。它基于MVC(模型-视图-控制器)架构模式,能够帮助开发者高效地组织代码并简化Web开发...
这是struts的一个练习 这是struts的一个练习这是struts的一个练习这是struts的一个练习
### 实用的Struts2分页技术解析与实践 #### 引言 在Web开发中,数据展示往往需要进行分页处理,以提高用户体验和服务器性能。Struts2框架提供了强大的MVC架构支持,其中分页功能是其常用且实用的一部分。本文将深入...
Struts2 分页技术是Java Web开发中常用的一种方法,用于在大量数据列表中实现高效、用户友好的浏览体验。本篇文章将详细讲解如何在Struts2框架中结合Hibernate ORM库实现分页功能。 首先,我们需要理解分页的基本...
Struts2分页模型是Java Web开发中一种常见的技术,用于在用户界面展示大量数据时进行数据的组织和浏览。分页的主要目的是提高用户体验,避免一次性加载过多数据导致页面响应变慢或者内存压力过大。本篇文章将深入...