基本思路: 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
分享到:
相关推荐
struts 分页 例子 jdbc 数据库备份
struts2增删改查,struts2分页查询
struts分页struts分页struts分页struts分页struts分页struts分页struts分页struts分页struts分页struts分页struts分页struts分页struts分页struts分页struts分页struts分页struts分页struts分页struts分页struts分页
Struts分页Struts分页Struts分页Struts分页Struts分页Struts分页Struts分页Struts分页
struts2分页效果第二种struts2分页效果第二种
该资源使用struts实现分页功能,是通过Action实现中枢的作用
Struts分页.这里帮忙讲述了Struts分页.分页 然后对比其他java分页的话更为简单
Struts2自定义分页标签很详细了,新手可以少走弯路,节约时间 资源包括了后台如何操作。
NULL 博文链接:https://lemo.iteye.com/blog/391872
Struts2分页程序Struts2分页程序Struts2分页程序Struts2分页程序Struts2分页程序Struts2分页程序Struts2分页程序Struts2分页程序Struts2分页程序
用Struts2+mysql实现的简单信息录入,分页查询
该文档详细描述了struts2版本的分页显示,值得一读
Struts2分页源码技术的应用 还有到了目前比较流行的框架hibernate框架,挺不错的
自己练习的一个struts2分页实现,代码完整,初学者可以下载看看,大家共同努力,发现问题,提升技能
MyBatis增 删 改 查 struts2分页
Struts2分页 使用mysql数据库
下面是我用Struts2做的一个分页显示实例,基本的思路是:把数据库表中的每一行数据封装成一个对象,用一个返回类型为List的方法返回这些对象,接着在Struts2的action里面定义一个List属性,用这个List来接收从数据库...
一个简单的hibernate+struts2分页功能 希望对你有所帮助
这是struts的一个练习 这是struts的一个练习这是struts的一个练习这是struts的一个练习