基本思路: 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分页"是一个经典的Java Web开发话题,它涉及到JSP(JavaServer Pages)和Struts1这两个核心技术。在这里,我们将深入探讨如何使用这两者实现一个高效的分页系统。 首先,让我们了解一下JSP。JSP是Java...
在Struts 1框架中实现分页,我们需要理解以下几个关键知识点: 1. **MVC架构**:Struts 1遵循MVC设计模式,将应用程序逻辑分为模型、视图和控制器三个部分。在分页场景中,模型负责处理数据,控制器处理用户请求并...
在探讨Struts2框架下的增删改查以及分页查询功能时,我们首先需要理解Struts2框架本身。Struts2是Apache软件基金会的一个开源Web应用框架,它继承了Struts1的一些特性,并在此基础上进行了大量的改进和扩展,提供了...
1. **创建Action类**:首先,你需要创建一个Action类,该类将处理用户的请求,包括获取数据、计算总页数以及处理分页参数。例如,你可以定义两个参数,`currentPage`和`pageSize`,用于跟踪当前页和每页显示的条目...
本资源通过Struts框架实现了分页功能,主要涉及到以下几个关键知识点: 1. **MVC设计模式**:MVC模式将应用程序分为三个核心部分:模型(Model)、视图(View)和控制器(Controller)。模型负责处理业务逻辑,视图...
Struts2分页源码技术是Web开发中一个重要的实践,尤其是在处理大数据量时,能够有效地提高用户体验,避免一次性加载过多数据导致页面响应慢。在本文中,我们将深入探讨Struts2分页技术的实现原理、应用方法以及与...
用Struts2+mysql实现的简单信息录入,分页查询
该文档详细描述了struts2版本的分页显示,值得一读
本文将详细介绍Struts2实现分页效果的第二种方法。 在Struts2中,实现分页通常涉及以下几个关键步骤: 1. **模型(Model)**:首先,我们需要一个实体类来存储待分页的数据,例如`User`。然后,创建一个`PageBean`类...
1. **创建Action类**:这是Struts2的核心组件,负责处理用户的请求。在Action类中,我们需要定义与分页相关的属性,如当前页数、每页显示的记录数以及总记录数等。同时,Action类需要包含处理分页请求的方法。 2. *...
1. **Action类**:在Struts2中,Action类是处理用户请求的中心。为了实现分页,我们需要创建一个包含分页参数(如当前页数、每页记录数)的Action类,并提供相应的业务逻辑。 2. **模型(Model)**:模型层负责与...
【hibernate+struts2分页代码】是关于如何在Java Web开发中结合Hibernate ORM框架和Struts2 MVC框架实现数据分页的功能。在Web应用程序中,分页是提高用户体验的重要手段,它允许用户逐步浏览大量数据,而无需一次性...
MyBatis增 删 改 查 struts2分页
本项目名为“jsp +struts 分页经典”,显然是一个利用这两种技术实现的分页展示数据的案例。下面我们将深入探讨JSP和Struts框架,以及它们在分页、查询和数据操作中的应用。 首先,JSP是Java平台上的动态网页技术,...
下面是我用Struts2做的一个分页显示实例,基本的思路是:把数据库表中的每一行数据封装成一个对象,用一个返回类型为List的方法返回这些对象,接着在Struts2的action里面定义一个List属性,用这个List来接收从数据库...
本教程将深入讲解如何在Struts1.2框架中实现分页功能。 一、理解分页原理 分页的基本思想是将数据库中的数据分割成若干个部分,每次只加载一部分到前端展示,用户可以通过点击页码或导航按钮来切换不同的数据页。...
1. 使用索引:确保用于排序和分页的字段有适当的数据库索引,以加快查询速度。 2. 数据库级别的分页:某些数据库系统提供了原生的分页功能,比如MySQL的LIMIT和OFFSET,这通常比在应用程序层面实现更有效率。 3. ...
### Struts2 实现分页及 `<s:bean>` 标签详解 #### 一、Struts2 分页概述 在 Java Web 开发中,为了提高用户体验并减轻服务器负担,通常采用分页技术来展示数据。Struts2 框架提供了一套强大的工具和标签库来帮助...
这是struts的一个练习 这是struts的一个练习这是struts的一个练习这是struts的一个练习