Struts分页代码

声明:本文代码来自“西安健飞软件”内部,由小洋提供全套技术支持!在此感谢!

PageList
package com.hp.struts.util;
import java.util.List;
public class PageList {
private Pages page = null ; // 分页对象
private List objectList = null ; // 对象集合
private String pageStr = "" ; // 分页字符串
public List getObjectList() {
return objectList ;
}
public void setObjectList(List objectList) {
this . objectList = objectList;
}
public Pages getPage() {
return page ;
}
public void setPage(Pages page) {
this . page = page;
pageStr =page.getLastPageBreak();
}
public String getPageStr() {
return pageStr ;
}
public void setPageStr(String pageStr) {
this . pageStr = pageStr;
}
}
Pages
package com.hp.struts.util;
import javax.servlet.http.HttpServletRequest;
public class Pages {
private String fileName = "" ;
private int pageSize =2; // 当页显示记录数
private int allPage =1; // 总页数
private int cPage =1; // 当前页
private int sPage =1; // 当前页开始记录数
private int allRecord =1; // 总记录数
private String lastPageBreak = "" ; // 分页字符串
public Pages(){
}
public Pages(String fileName,HttpServletRequest request){
this . fileName =request.getContextPath()+fileName;
// 获得当前页
String cPageStr = request.getParameter( "cpage" )== null ? "1" :request.getParameter( "cpage" );
int cPageInt = 0;
try
{
cPageInt = Integer.parseInt(cPageStr);
} catch (Exception e){
System. out .println( "com.s6.util.Pages = " +e.getMessage());
cPageInt = 1;
} finally {
cPage = cPageInt;
}
}
// 计算总页数 , 判断当前页的合法性,计算当前页的开始记录数,生成分页字符串
public void doPage(){
// 计算总页数
this . allPage =( int )( this . allRecord + this . pageSize -1)/ this . pageSize ;
// 判断当前页的合法性
if ( this . cPage <0){
this . cPage =1;
}
if ( this . cPage > this . allPage ){
this . cPage = this . allPage ;
}
// 计算当前页开始记录数
this . sPage =( this . cPage -1)* this . pageSize +1;
// 生成分页字符串
StringBuffer str= new StringBuffer();
// 判断是否有问号
if ( this . fileName .indexOf( "?" )==-1){
this . fileName = this . fileName + "?1=1" ;
}
str.append( "<table width=/"100%/" height=/"100%/">" );
// 添加表单
str.append( "<form name=/"pagelist/" method=/"post/" action=/"" );
str.append( this . fileName + "/">" );
str.append( "<tr><td width=/"100%/" height=/"100%/" align=/"center/" valign=/"middle/">" );
str.append( " 总纪录数 " + this . allRecord + " " );
str.append( "&nbsp;" );
// 首页
if ( this . cPage >1){
str.append( "<a href=" + this . fileName + "&cpage=1> 首页 </a>" );
} else {
str.append( " 首页 " );
}
str.append( "&nbsp;" );
// 上一页
if ( this . cPage >1){
str.append( "<a href=" );
str.append( this . fileName + "&cpage=" );
str.append( this . cPage -1);
str.append( "> 上一页 </a>" );
} else {
str.append( " 上一页 " );
}
str.append( "&nbsp;" );
// 下一页
if ( this . cPage < this . allPage ){
str.append( "<a href=" );
str.append( this . fileName + "&cpage=" );
str.append( this . cPage +1);
str.append( "> 下一页 </a>" );
} else {
str.append( " 下一页 " );
}
str.append( "&nbsp;" );
// 末页
if ( this . cPage < this . allPage ){
str.append( "<a href=" );
str.append( this . fileName + "&cpage=" );
str.append( this . allPage );
str.append( "> 末页 </a>" );
} else {
str.append( " 末页 " );
}
str.append( "&nbsp;" );
// 第几页
str.append( " " );
str.append( this . cPage );
str.append( " " );
str.append( "&nbsp;" );
// 共几页
str.append( " " );
str.append( this . allPage );
str.append( " " );
str.append( "&nbsp;" );
// 跳转页
for ( int i=1;i<= this . allPage ;i++){
str.append( "&nbsp;" );
if (i== this . cPage ){
str.append(i);
} else {
str.append( "<a href=" );
str.append( this . fileName + "&cpage=" );
str.append(i);
str.append( ">" +i+ "</a>" );
}
}
//str.append("&nbsp;&nbsp; 跳转到 ");
//str.append("<select name=/"cpage/" onchange=/"document.pagelist.submit()/" >");
//for(int i=1;i<=this.allPage;i++){
// str.append("<option value=/"");
// str.append(i);
// str.append("/"");
// if(this.cPage==i){
// str.append(" selected");
// }
// str.append(">");
// str.append(i);
// str.append("</option>");
//}
//str.append("</select> ");
str.append( "</td></tr></form>" );
str.append( "</table>" );
lastPageBreak =str.toString();
}
public int getAllPage() {
return allPage ;
}
public void setAllPage( int allPage) {
this . allPage = allPage;
}
public int getCPage() {
return cPage ;
}
public void setCPage( int page) {
cPage = page;
}
public String getFileName() {
return fileName ;
}
public void setFileName(String fileName) {
this . fileName = fileName;
}
public String getLastPageBreak() {
return lastPageBreak ;
}
public void setLastPageBreak(String lastPageBreak) {
this . lastPageBreak = lastPageBreak;
}
public int getPageSize() {
return pageSize ;
}
public void setPageSize( int pageSize) {
this . pageSize = pageSize;
}
public int getSPage() {
doPage();
return sPage ;
}
public void setSPage( int page) {
sPage = page;
}
public int getAllRecord() {
return allRecord ;
}
public void setAllRecord( int allRecord) {
this . allRecord = allRecord;
}
}
Action 类里的分页方法(函数)
public ActionForward fenye(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
String userId=request.getParameter( "userId" );
UserDAO userDao= new UserDAO();
Pages pages = new Pages( "/user.do?method=fenye" ,request);
pages.setPageSize(5); // 当前页显示的记录数
PageList pageList = userDao.getUserpagelist(pages);
request.setAttribute( "emps" ,pageList);
return mapping.findForward( "fenye" );
}
DAO 里的分页方法
public PageList getUserpagelist(Pages pages)
{
PageList pageList = new PageList();
List list = new ArrayList();
String sql= "select * from T_USER_SYS" ;
// 执行 SQL 语句获得结果集
ResultSet rs= this .doExcuteQuery(sql);
try {
// 首先将光标移动到最后一行
rs.last();
pages.setAllRecord(rs.getRow()); // 记录集总行数
rs.absolute(pages.getSPage()); // 光标定位到页的第一行
int i=0; // 循环变量
// 判断记录总行数是否大于 0 ,并循环创建 USER 对象
if (pages.getAllRecord()>0)
{
do {
UserBean userBean= new UserBean();
userBean.setUserId(rs.getString(1));
userBean.setUserName(rs.getString(2));
userBean.setUserPwd(rs.getString(3));
userBean.setUserState(rs.getString(4));
list.add(userBean);
i++;
} while (rs.next()&&i<pages.getPageSize());
}
} catch (SQLException e) {
e.printStackTrace();
} finally
{
this .closeConn();
}
pageList.setPage(pages);
pageList.setObjectList(list);
return pageList;
}
分页的 JSP 页面
<%@ page language = "java" pageEncoding = "UTF-8" %>
<%@ taglib uri = "http://struts.apache.org/tags-bean" prefix = "bean" %>
<%@ taglib uri = "http://struts.apache.org/tags-html" prefix = "html" %>
<%@ taglib uri = "http://struts.apache.org/tags-logic" prefix = "logic" %>
<%@ taglib uri = "http://struts.apache.org/tags-tiles" prefix = "tiles" %>
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" >
< html:html lang = "true" >
< head >
< html:base />
< title > fenye.jsp </ 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 >
< c:forEach items = "${emps.objectList}"var="emp">
< tr >
< td height = "25" align = "cneter" class = "table3" bgcolor = "dfdfdf" >
< input type = "checkbox" name = "ck2" value = "${emp.userId}"/></td>
< td align = "center" class = "table3" bgcolor = "dfdfdf" > ${emp.userName} </ td >
< td align = "center" valign = "middle" class = "table3" bgcolor = "dfdfdf" > ${emp.userPwd} </ td >
< td align = "center" valign = "middle" class = "table3" bgcolor = "dfdfdf" >
< html:link action = "/deluser.do?userId=${emp.userId}">del</html:link>
</ td >
</ tr >
</ c:forEach >
< tr >
< td align = "left" >< c:out value = "${emps.pageStr}"escapeXml="false"></c:out></td>
</ tr >
</ table >
</ body >
</ html:html >

SSH中的DAO

public PageList userList(Pages pages) {
PageList pageList = new PageList();
List list = new ArrayList();
Session session = this .getSession();
Transaction t = session.beginTransaction();
// 获得结果集
Query query = session.createQuery( "from jfis.bean.JfisUserSys" );
//记录集总行数
pages.setAllRecord(query.list().size());
query.setFirstResult(pages.getSPage()-1);
query.setMaxResults(5);
List rs = query.list();
Iterator iterator = rs.iterator();
// 得到分页字符串
pages.getSPage();
int i = 0; // 循环变量
// 判断记录总行数是否大于0,并循环创建USER对象
if (pages.getAllRecord() > 0) {
do {
list = rs;
i++;
} while (iterator.hasNext() && i < pages.getPageSize());
pageList.setPage(pages);
pageList.setObjectList(list);
t.commit();
session.close();
}
return pageList;
}

你可能感兴趣的:(struts)