操作数据: PageDao.java
package com.enorth.lichen.youth.dao;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.Session;
import com.enorth.lichen.youth.hi.HibernateUtils;
public class PageDao {
public List pageQuery(int pageSize, int pageNow){
List list=new ArrayList();
Session session = null;
try {
session = HibernateUtils.getSession();
session.beginTransaction();
//得到每页显示的LevTwoInFuUser的对象的集合list
list = session.createQuery("from LevTwoInFuUser l2if where l2if.permission = 201 order by l2if.l2infid")
.setFirstResult(pageNow*pageSize-pageSize)
.setMaxResults(pageSize)
.list();
session.getTransaction().commit();
}catch(Exception e) {
e.printStackTrace();
session.getTransaction().rollback();
}finally {
HibernateUtils.closeSession(session);
}
return list;
}
public int pageTotle(int pageSize, int pageNow){
int i=0;
Session session = null;
try {
session = HibernateUtils.getSession();
session.beginTransaction();
//i是查询结果条数
i = session.createQuery("from LevTwoInFuUser l2if where l2if.permission = 201 order by l2if.l2infid")
.list()
.size();
//用总的结果条数对每页显示的条数取余,得到总页数
i=i%pageSize==0?i/pageSize:i/pageSize+1 ;
session.getTransaction().commit();
}catch(Exception e) {
e.printStackTrace();
session.getTransaction().rollback();
}finally {
HibernateUtils.closeSession(session);
}
return i;
}
}
Action处理: PageQueryAction.java
package com.enorth.lichen.youth.act;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.SessionAware;
import com.enorth.lichen.youth.dao.PageDao;
import com.opensymphony.xwork2.ActionSupport;
public class PageQueryAction extends ActionSupport implements ServletRequestAware,SessionAware{
private HttpServletRequest request;
private List list;
private int pageNow = 1 ; //初始化为1,默认从第一页开始显示
private int pageSize = 3 ; //每页显示3条记录
private int pageTotle= 1 ;//总页数
private PageDao pageDao = new PageDao () ;
public List getList() {
return list;
}
public void setList(List list) {
this.list = list;
}
public int getPageNow() {
return pageNow;
}
public void setPageNow(int pageNow) {
this.pageNow = pageNow;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getPageTotle() {
return pageTotle;
}
public void setPageTotle(int pageTotle) {
this.pageTotle = pageTotle;
}
@Override
public String execute() throws Exception {
//得到每页显示的对象的集合list
list = pageDao.pageQuery(pageSize, pageNow);
//得到总页数pageTotle
pageTotle=pageDao.pageTotle(pageSize, pageNow);
return SUCCESS;
}
@Override
public void setServletRequest(HttpServletRequest request) {
// TODO Auto-generated method stub
this.request=request;
}
@Override
public void setSession(Map arg0) {
// TODO Auto-generated method stub
}
}
查询分页页面: page.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<SCRIPT type="text/javascript" src="js/calendar.js"></SCRIPT>
<base href="<%=basePath%>">
<title>分页</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<table border="1">
<tr>
<th>
用户编号
</th>
<th>
真实姓名
</th>
<th>
注册时间
</th>
</tr>
<!-- 迭代查询 -->
<s:iterator value="list">
<tr>
<td>
<s:property value="l2infid" />
</td>
<td>
<s:property value="realname" />
</td>
<td>
<s:property value="registime" />
</td>
</tr>
</s:iterator>
</table>
<!-- 首页 -->
<s:url id="url_first" value="page.action">
<s:param name="pageNow" value="1"></s:param>
</s:url>
<!-- 上一页 -->
<s:url id="url_pre" value="page.action">
<s:param name="pageNow" value="pageNow-1"></s:param>
</s:url>
<!-- 下一页 -->
<s:url id="url_next" value="page.action">
<s:param name="pageNow" value="pageNow+1"></s:param>
</s:url>
<!-- 末页 -->
<s:url id="url_last" value="page.action">
<s:param name="pageNow" value="pageTotle"></s:param>
</s:url>
<!-- 如果不是首页则提供首页的链接,如果是首页则不提供链接,以下类似 -->
<s:if test="pageNow != 1">
[<s:a href="%{url_first}">首页</s:a>]
</s:if>
<s:else>
[首页]
</s:else>
<s:if test="pageNow>1">
[<s:a href="%{url_pre}">上一页</s:a>]
</s:if>
<s:else>
[上一页]
</s:else>
<!-- for循环, current是循环变量(org.apache.struts2.util.Counter里定义的)-->
<s:bean name="org.apache.struts2.util.Counter" id="i">
<s:param name="first" value="1" />
<s:param name="last" value="%{pageTotle}" />
<s:iterator>
<s:if test="pageNow+1== current">
<font color="#3f84ff"><b><s:property /></b></font>
</s:if>
<s:else>
<s:a href="page.action?pageNow=%{current-1}"> <font color="#2fa2ff"><s:property /></font></s:a>
</s:else>
</s:iterator>
</s:bean>
<s:iterator value="list" status="status">
<s:url id="url" value="page.action">
<s:param name="pageNow" value="pageNow" />
<s:param name="pageTotle" value="pageTotle" />
</s:url>
</s:iterator>
<s:if test=" pageTotle > pageNow ">
[<s:a href="%{url_next}">下一页</s:a>]
</s:if>
<s:else>
[下一页]
</s:else>
<s:if test="pageTotle != pageNow">
[<s:a href="%{url_last}">末页</s:a>]
</s:if>
<s:else>
[末页]
</s:else>
</body>
</html>
本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/lc19850921/archive/2009/01/07/3727388.aspx
package com.enorth.lichen.youth.dao;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.Session;
import com.enorth.lichen.youth.hi.HibernateUtils;
public class PageDao {
public List pageQuery(int pageSize, int pageNow){
List list=new ArrayList();
Session session = null;
try {
session = HibernateUtils.getSession();
session.beginTransaction();
//得到每页显示的LevTwoInFuUser的对象的集合list
list = session.createQuery("from LevTwoInFuUser l2if where l2if.permission = 201 order by l2if.l2infid")
.setFirstResult(pageNow*pageSize-pageSize)
.setMaxResults(pageSize)
.list();
session.getTransaction().commit();
}catch(Exception e) {
e.printStackTrace();
session.getTransaction().rollback();
}finally {
HibernateUtils.closeSession(session);
}
return list;
}
public int pageTotle(int pageSize, int pageNow){
int i=0;
Session session = null;
try {
session = HibernateUtils.getSession();
session.beginTransaction();
//i是查询结果条数
i = session.createQuery("from LevTwoInFuUser l2if where l2if.permission = 201 order by l2if.l2infid")
.list()
.size();
//用总的结果条数对每页显示的条数取余,得到总页数
i=i%pageSize==0?i/pageSize:i/pageSize+1 ;
session.getTransaction().commit();
}catch(Exception e) {
e.printStackTrace();
session.getTransaction().rollback();
}finally {
HibernateUtils.closeSession(session);
}
return i;
}
}
Action处理: PageQueryAction.java
package com.enorth.lichen.youth.act;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.SessionAware;
import com.enorth.lichen.youth.dao.PageDao;
import com.opensymphony.xwork2.ActionSupport;
public class PageQueryAction extends ActionSupport implements ServletRequestAware,SessionAware{
private HttpServletRequest request;
private List list;
private int pageNow = 1 ; //初始化为1,默认从第一页开始显示
private int pageSize = 3 ; //每页显示3条记录
private int pageTotle= 1 ;//总页数
private PageDao pageDao = new PageDao () ;
public List getList() {
return list;
}
public void setList(List list) {
this.list = list;
}
public int getPageNow() {
return pageNow;
}
public void setPageNow(int pageNow) {
this.pageNow = pageNow;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getPageTotle() {
return pageTotle;
}
public void setPageTotle(int pageTotle) {
this.pageTotle = pageTotle;
}
@Override
public String execute() throws Exception {
//得到每页显示的对象的集合list
list = pageDao.pageQuery(pageSize, pageNow);
//得到总页数pageTotle
pageTotle=pageDao.pageTotle(pageSize, pageNow);
return SUCCESS;
}
@Override
public void setServletRequest(HttpServletRequest request) {
// TODO Auto-generated method stub
this.request=request;
}
@Override
public void setSession(Map arg0) {
// TODO Auto-generated method stub
}
}
查询分页页面: page.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<SCRIPT type="text/javascript" src="js/calendar.js"></SCRIPT>
<base href="<%=basePath%>">
<title>分页</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<table border="1">
<tr>
<th>
用户编号
</th>
<th>
真实姓名
</th>
<th>
注册时间
</th>
</tr>
<!-- 迭代查询 -->
<s:iterator value="list">
<tr>
<td>
<s:property value="l2infid" />
</td>
<td>
<s:property value="realname" />
</td>
<td>
<s:property value="registime" />
</td>
</tr>
</s:iterator>
</table>
<!-- 首页 -->
<s:url id="url_first" value="page.action">
<s:param name="pageNow" value="1"></s:param>
</s:url>
<!-- 上一页 -->
<s:url id="url_pre" value="page.action">
<s:param name="pageNow" value="pageNow-1"></s:param>
</s:url>
<!-- 下一页 -->
<s:url id="url_next" value="page.action">
<s:param name="pageNow" value="pageNow+1"></s:param>
</s:url>
<!-- 末页 -->
<s:url id="url_last" value="page.action">
<s:param name="pageNow" value="pageTotle"></s:param>
</s:url>
<!-- 如果不是首页则提供首页的链接,如果是首页则不提供链接,以下类似 -->
<s:if test="pageNow != 1">
[<s:a href="%{url_first}">首页</s:a>]
</s:if>
<s:else>
[首页]
</s:else>
<s:if test="pageNow>1">
[<s:a href="%{url_pre}">上一页</s:a>]
</s:if>
<s:else>
[上一页]
</s:else>
<!-- for循环, current是循环变量(org.apache.struts2.util.Counter里定义的)-->
<s:bean name="org.apache.struts2.util.Counter" id="i">
<s:param name="first" value="1" />
<s:param name="last" value="%{pageTotle}" />
<s:iterator>
<s:if test="pageNow+1== current">
<font color="#3f84ff"><b><s:property /></b></font>
</s:if>
<s:else>
<s:a href="page.action?pageNow=%{current-1}"> <font color="#2fa2ff"><s:property /></font></s:a>
</s:else>
</s:iterator>
</s:bean>
<s:iterator value="list" status="status">
<s:url id="url" value="page.action">
<s:param name="pageNow" value="pageNow" />
<s:param name="pageTotle" value="pageTotle" />
</s:url>
</s:iterator>
<s:if test=" pageTotle > pageNow ">
[<s:a href="%{url_next}">下一页</s:a>]
</s:if>
<s:else>
[下一页]
</s:else>
<s:if test="pageTotle != pageNow">
[<s:a href="%{url_last}">末页</s:a>]
</s:if>
<s:else>
[末页]
</s:else>
</body>
</html>
本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/lc19850921/archive/2009/01/07/3727388.aspx
本文介绍了一个基于Struts2框架的分页查询实现方案,通过PageDao类进行数据库操作,获取特定数量的记录并返回给PageQueryAction处理类。PageQueryAction处理类负责调用PageDao的方法来获取每页的数据及总页数,并将数据传递给JSP页面进行展示。
4094

被折叠的 条评论
为什么被折叠?



