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

struts1 分页

阅读更多

基本思路: struts1 用的是ActionForm 和 Action 所以分页的时候可以再ActionForm上做文章,因为form中封装分页的一些信息,然后在action引入的service中进行分页就可以了

 

在需要分页的页面中加入标签

<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>  

分页的公共页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ include file="taglib.jsp"%>
<script type="text/javascript">
function commonAll(uurl) {//点击分页页号以及上一页下一页时候自动提交表单
    document.forms[0].action=uurl;
    document.forms[0].submit();
}

function ForwardPage(url){
  var cur=document.getElementById("curpage").value;
  var max=document.getElementById("max").value;
  if(cur==0){
     document.getElementById("curpage").value=1;
     cur=1;
  }
  if(max==0){
     max=1;
  }
  if(isNaN(cur)||cur<1){
  	document.getElementById("curpage").value=1;
  }
  if(parseInt(cur)>parseInt(max)){
     document.getElementById("curpage").value=max;
  }
  commonAll(url);
}

function ckPage(o){
	
	if(isNaN(o.value) || o.value<0){
		o.value = 1;
	}
}
</script>
<tiles:importAttribute />
<bean:define id="fname" name="formName" scope="page" />
<bean:define id="aname" name="actionName" scope="page" />
<bean:define id="pagename" name="pageName" scope="page" />
<bean:define id="maxpage" name="<%=(String)fname%>" property="maxpage" />
<bean:define id="curpage" name="<%=(String)fname%>" property="curpage" />
<%
int cur = ((Integer)curpage).intValue(); //当前页
int max = ((Integer)maxpage).intValue(); //最大页数
 %>
 	共
		<bean:write name="<%=(String)fname%>" property="listsize" /> 条 
  <a>页次:<%=cur%>/<%=max%></a>      
   <%if(cur!=1){%><a href="#" onClick="commonAll('<%=(String)aname%>.do?operate=<%=pagename%>&curpage=<%=Integer.toString(cur-1)%>')" >
   上一页<%}%></a>
    <%
     int base = cur/10;
     int count=0;
	 if((base+1)*10>=max){
	 count=max;
	 }else{
	    count=(base+1)*10;
	 }
     for(int j=base != 0 ? base*10-1 : base*10;j<count;j++){%>
      <a href="#" onClick="commonAll('<%=(String)aname%>.do?operate=<%=pagename%>&curpage=<%=j+1%>')" <%if(cur==j+1){%>class="pageOn"<%}%>><%=j+1%></a>
       <%  }   
       if(max!=0&&max>cur){
       %>
      <a href="#" onClick="commonAll('<%=(String)aname%>.do?operate=<%=pagename%>&curpage=<%=Integer.toString(cur+1)%>')" >下一页</a><%}%>
      
       
       
       

 

 

在需要分页的页面中引入页面的代码如下:

 

<tiles:insert page="page.jsp">  
    <tiles:put name="formName" value="firstCheckUpForm" />  
    <tiles:put name="actionName" value="vCardApplyAuditing" />  
    <tiles:put name="pageName" value="vCardApplyAuditingQuery" />  
</tiles:insert>  

 <tiles:insert page="frontPageBtn.jsp">引入frontPageBtn.jsp页面
<tiles:put name="formName" value="firstCheckUpForm" />ActionForm名称(struts配置文件中的form的name)
<tiles:put name="actionName" value="vCardApplyAuditing" />Action的struts配置名称(提交的地址 .do前面的路径)
<tiles:put name="pageName" value="vCardApplyAuditingQuery" />dispatchAction的parameter参数的值(方法名称)

 

 

dao.java中定义分页查询的方法

//hql 查询
public List findByHql(String hql) {
		try {

			List list = getHibernateTemplate().find(hql);
			if (list.isEmpty()) {
				return null;
			} else {
				return list;
			}
		} catch (Exception re) {
			logger.log(Level.SEVERE, "查询数据库错误" + re.getMessage());
			return null;
		}
}

//sql 查询
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();
			}
		});
}



/**
	 * 利用Hibenate回调,分页程序
	 * @param SQL语句(可以使带参数的,也可以是不带参数的 (带参数指的是“?”))
	 * @param obj SQL的参数 对应SQL中的“?”
	 * @param currpage 当前页码
	 * @param rowsNum   查询全部结果条数
	 * @param maxResult  每一页的结果数量
	 */
//sql 分页查询
public List findPageSql(final Object[] obj, final String hql,
			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(hql);
				if (obj != null) {
					for (int i = 0; i < obj.length; i++) {
						Class theClass = obj[i].getClass();
						if (theClass.getName().equals("java.lang.String"))
							query.setString(i, (String) obj[i]);
						if (theClass.getName().equals("java.lang.Long"))
							query.setLong(i, (Long) obj[i]);
						if (theClass.getName().equals("java.sql.Date"))
							query.setDate(i, (Date) obj[i]);
						if (theClass.getName().equals("java.sql.Timestamp"))
							query.setTimestamp(i, (Timestamp) obj[i]);
						if (theClass.getName().equals("java.lang.Iterate"))
							query.setInteger(i, (Integer) obj[i]);
					}
				} //根据此条件查询记录条敄1�7
				if (rowsNum != -1) {
					query.setFirstResult((currpage - 1) * maxResult);
					query.setMaxResults(maxResult);
				}
				List list = query.list();
				return list;
			}
		});
	}


/**
	 * 利用Hibenate回调,分页程序
	 * @param HQL语句(可以使带参数的,也可以是不带参数的 (带参数指的是“?”))
	 * @param obj hql的参数 对应hql中的“?”
	 * @param currpage 当前页码
	 * @param rowsNum   查询全部结果条数
	 * @param maxResult  每一页的结果数量
	 */	
	//hql 分页查询
	public List findPage(final Object[] obj, final String hql,
			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.createQuery(hql);
				if (obj != null) {
					for (int i = 0; i < obj.length; i++) {
						Class theClass = obj[i].getClass();
						if (theClass.getName().equals("java.lang.String"))
							query.setString(i, (String) obj[i]);
						if (theClass.getName().equals("java.lang.Long"))
							query.setLong(i, (Long) obj[i]);
						if (theClass.getName().equals("java.sql.Date"))
							query.setDate(i, (Date) obj[i]);
						if (theClass.getName().equals("java.sql.Timestamp"))
							query.setTimestamp(i, (Timestamp) obj[i]);
						if (theClass.getName().equals("java.lang.Iterate"))
							query.setInteger(i, (Integer) obj[i]);
					}
				} //根据此条件查询记录条数
				if (rowsNum != -1) {
					query.setFirstResult((currpage - 1) * maxResult);
					query.setMaxResults(maxResult);
				}
				List list = query.list();
				return list;
			}
		});
	}
	
	/**
	 * 利用Hibenate回调,分页程序
	 * @param sql语句(是不带参数的 (不带参数指的是“?”))
	 * @param currpage 当前页码
	 * @param rowsNum   查询全部结果条数
	 * @param maxResult  每一页的结果数量
	 */	
	//不带参数的sql查询(直接传入生成的sql语句)
	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;
			}
		});
	}
		

 

定义一个公共的PubForm用于分页,项目中用到的ActionForm可以继承此PubForm

在PubForm定义3个变量
private int maxpage = 1;最大页数
private int curpage = 1;当前页
private int listsize = 0;所有记录的数量
自动生成setter getter方法

 

 

service中调用分页

	public List queryApply(FirstCheckUpForm form, int pageItems){//pageItems : 每页条数
		String sql = "select " + 
				" ra.ID," + // 0 申请id
				" ra.YCSID," + // 1 验船师id
				" ra.STATUS," + // 2 申请状态
				" ra.TYPE," + //3 申请种类
				" ra.CHECKUPID," + //4 审核id
				" ra.CREATETIME," + // 5 申请时间
				" y.IDNO," + // 6 验船师身份证
				" y.YCSNAME," + // 7 验船师姓名
				" y.SEX," + // 8 验船师性别
				" y.CERTNO," + // 9 证书号
				" y.LEVELS " + // 10 证书等级
				" from REMAKEAPPLY ra left join YCSINFO y on y.YCSID = ra.YCSID" +
				" order by ra.CREATETIME desc";
		List l = dao.findBySql(sql);
		
		if(l != null){
			int rowsNum = l.size();
			int temp = rowsNum % pageItems; //取模
			int pageNum = 0;
			if (temp > 0) {//如果有余数
				pageNum = rowsNum / pageItems + 1;
			} else if (temp == 0)
				pageNum = rowsNum / pageItems;
			form.setListsize(rowsNum);//设置总记录条数
			form.setMaxpage(pageNum);// 设置最大页数
			//return this.findObjs(form.getCurpage(), rowsNum, pageItems, map);
			return dao.findPageSql(sql, form.getCurpage(), rowsNum, pageItems);
		}else{
			return null;
		}
		
	};
			

 

所有文件见附件

 

作者:ThirdteenDevil 十三妖

qq: 181907667

 

分享到:
评论

相关推荐

    jsp+struts1分页

    "jsp+struts1分页"是一个经典的Java Web开发话题,它涉及到JSP(JavaServer Pages)和Struts1这两个核心技术。在这里,我们将深入探讨如何使用这两者实现一个高效的分页系统。 首先,让我们了解一下JSP。JSP是Java...

    struts 1 分页

    在Struts 1框架中实现分页,我们需要理解以下几个关键知识点: 1. **MVC架构**:Struts 1遵循MVC设计模式,将应用程序逻辑分为模型、视图和控制器三个部分。在分页场景中,模型负责处理数据,控制器处理用户请求并...

    struts2增删改查,struts2分页查询

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

    Struts2自定义分页标签

    1. **创建Action类**:首先,你需要创建一个Action类,该类将处理用户的请求,包括获取数据、计算总页数以及处理分页参数。例如,你可以定义两个参数,`currentPage`和`pageSize`,用于跟踪当前页和每页显示的条目...

    使用struts实现分页

    本资源通过Struts框架实现了分页功能,主要涉及到以下几个关键知识点: 1. **MVC设计模式**:MVC模式将应用程序分为三个核心部分:模型(Model)、视图(View)和控制器(Controller)。模型负责处理业务逻辑,视图...

    Struts2分页源码技术的应用

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

    Struts2实现分页查询

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

    struts2分页显示

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

    struts2分页效果第二种

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

    Struts2 分页实现

    1. **创建Action类**:这是Struts2的核心组件,负责处理用户的请求。在Action类中,我们需要定义与分页相关的属性,如当前页数、每页显示的记录数以及总记录数等。同时,Action类需要包含处理分页请求的方法。 2. *...

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

    1. **Action类**:在Struts2中,Action类是处理用户请求的中心。为了实现分页,我们需要创建一个包含分页参数(如当前页数、每页记录数)的Action类,并提供相应的业务逻辑。 2. **模型(Model)**:模型层负责与...

    hibernate+struts2分页代码

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

    MyBatis+struts2分页

    MyBatis增 删 改 查 struts2分页

    jsp +struts 分页经典

    本项目名为“jsp +struts 分页经典”,显然是一个利用这两种技术实现的分页展示数据的案例。下面我们将深入探讨JSP和Struts框架,以及它们在分页、查询和数据操作中的应用。 首先,JSP是Java平台上的动态网页技术,...

    struts2分页代码的示例

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

    struts1.2实现分页

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

    hibernate+struts后台分页

    1. 使用索引:确保用于排序和分页的字段有适当的数据库索引,以加快查询速度。 2. 数据库级别的分页:某些数据库系统提供了原生的分页功能,比如MySQL的LIMIT和OFFSET,这通常比在应用程序层面实现更有效率。 3. ...

    struts2实现分页

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

    struts2分页系统

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

Global site tag (gtag.js) - Google Analytics