struts分页代码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了struts分页代码相关的知识,希望对你有一定的参考价值。

要求STRUTS分页代码住明详细注释,还有本人现在做项目,要模仿360的论坛,采用STRUTS+HIBERNATE,有兴趣的朋友可以和我联系,菜鸟别来,QQ:379506986

OKOK分页实例代码
1 Book.java

package bean;
import java.sql.*;
import java.util.ArrayList;
/**
* Struts分页显示数据Bean,对应数据库中Book表
*/
public class Book
private String bookname; //书名
private String author; //作者
private String price; //价格

public Book(String name,String author,String price)
this.bookname=name;
this.author=author;
this.price=price;


public String getAuthor()
return author;


public void setAuthor(String author)
this.author = author;


public String getBookname()
return bookname;


public void setBookname(String bookname)
this.bookname = bookname;


public String getPrice()
return this.price;


public void setPrice(String price)
this.price=price;


public static ArrayList getAllBook(Connection connection)
String sql="select * from book";
ArrayList arrayList = new ArrayList();
try
Statement statement = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSet resultSet = statement.executeQuery(sql);
System.out.println("BookBean 数据查询已完成!");
while(resultSet.next())

String name = resultSet.getString("name");
String author = resultSet.getString("author");
String price = resultSet.getString("price");
System.out.println("开始数据封装:name="+name+"author="+author+"price="+price);
Book book = new Book(name,author,price);
arrayList.add(book);

connection.close();
resultSet.close();
catch(SQLException e)

System.out.println("数据库异常"+e.toString());


return arrayList;



2 PageBean.java
package page;
import bean.Book;
import java.util.*;
/**
* Struts分页显示逻辑Bean
*/
public class PageBean

int currentPage=1; //当前页
public int totalPages=0; //总页数
int pageRecorders=5;//每页5条数据
int totalRows=0; //总数据数
int pageStartRow=0;//每页的起始数
int pageEndRow=0; //每页显示数据的终止数
boolean hasNextPage=false; //是否有下一页
boolean hasPreviousPage=false; //是否有前一页
ArrayList arrayList;
Iterator it;
public PageBean()

public PageBean(ArrayList arrayList)
this.arrayList=arrayList;
totalRows=arrayList.size();
it=arrayList.iterator();
hasPreviousPage=false;
currentPage=1;
if((totalRows%pageRecorders)==0)

totalPages=totalRows/pageRecorders;

else

totalPages=totalRows/pageRecorders+1;


if(currentPage>=totalPages)

hasNextPage=false;

else

hasNextPage=true;


if(totalRows<pageRecorders)

this.pageStartRow=0;
this.pageEndRow=totalRows;

else

this.pageStartRow=0;
this.pageEndRow=pageRecorders;




/**
* @return Returns the currentPage.
*/
public String getCurrentPage()
return this.toString(currentPage);

/**
* @param currentPage The currentPage to set.
*/
public void setCurrentPage(int currentPage)
this.currentPage = currentPage;

/**
* @return Returns the pageRecorders.
*/
public int getPageRecorders()
return pageRecorders;

/**
* @param pageRecorders The pageRecorders to set.
*/
public void setPageRecorders(int pageRecorders)
this.pageRecorders = pageRecorders;

/**
* @return Returns the pageEndRow.
*/
public int getPageEndRow()
return pageEndRow;

/**
* @return Returns the pageStartRow.
*/
public int getPageStartRow()
return pageStartRow;

/**
* @return Returns the totalPages.
*/
public String getTotalPages()

return this.toString(totalPages);

/**
* @return Returns the totalRows.
*/
public String getTotalRows()
return this.toString(totalRows);

/**
* @return Returns the hasNextPage.
*/
public boolean isHasNextPage()
return hasNextPage;

/**
* @param hasNextPage The hasNextPage to set.
*/
public void setHasNextPage(boolean hasNextPage)
this.hasNextPage = hasNextPage;

/**
* @return Returns the hasPreviousPage.
*/
public boolean isHasPreviousPage()
return hasPreviousPage;

/**
* @param hasPreviousPage The hasPreviousPage to set.
*/
public void setHasPreviousPage(boolean hasPreviousPage)
this.hasPreviousPage = hasPreviousPage;

public Book[] getNextPage()

currentPage=currentPage+1;
System.out.println("PageBean.getNextPage()正在执行;");
System.out.println("参数currentPage="+currentPage);

if((currentPage-1)>0)

hasPreviousPage=true;

else

hasPreviousPage=false;


if(currentPage>=totalPages)

hasNextPage=false;

else

hasNextPage=true;

System.out.println("参数hasNextPage="+hasNextPage);
System.out.println("准备执行PageBean.getBooks()");
Book[] books=getBooks();
this.description();

return books;


public Book[] getPreviouspage()

currentPage=currentPage-1;

if(currentPage==0)currentPage=1;

if(currentPage>=totalPages)

hasNextPage=false;

else

hasNextPage=true;

if((currentPage-1)>0)

hasPreviousPage=true;

else

hasPreviousPage=false;

Book[] books=getBooks();
this.description();
return books;


public Book[] getBooks()
System.out.println("pageBean.getBooks()开始执行;");

if(currentPage*pageRecorders<totalRows)//判断是否为最后一页
pageEndRow=currentPage*pageRecorders;
pageStartRow=pageEndRow-pageRecorders;

else
pageEndRow=totalRows;
pageStartRow=pageRecorders*(totalPages-1);

Book[] books=new Book[pageEndRow-pageStartRow+1];

System.out.println("pageStartRow="+pageStartRow);
System.out.println("pageEndRow="+pageEndRow);
int j=0;
for(int i=pageStartRow;i<pageEndRow;i++)


Book book=(Book)arrayList.get(i);
books[j++]=book;


System.out.println("要显示的页面数据已经封装,具体信息如下:");
this.description();
return books;


public String toString(int temp)

String str=Integer.toString(temp);
return str;


public void description()


String description="共有数据数:"+this.getTotalRows()+

"共有页数: "+this.getTotalPages() +

"当前页数为:"+this.getCurrentPage()+

" 是否有前一页: "+this.isHasPreviousPage() +

" 是否有下一页:"+this.isHasNextPage()+

" 开始行数:"+this.getPageStartRow()+

" 终止行数:"+this.getPageEndRow();

System.out.println(description);




3 PageListAction.java
package page;
import org.apache.struts.action.*;
import javax.servlet.http.*;
import comm.Constants;

import bean.Book;
import java.util.*;
import javax.sql.DataSource;
/**
* Struts分页显示Action
*/
public class PageListAction extends Action

public PageListAction()
ArrayList arrayList=new ArrayList();
PageBean pb;

public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception
String action;
action=request.getParameter("action");
if(action==null || action.equals("null")) //第一次读取数据
try
DataSource datasource=this.getDataSource(request,Constants.DATASOURCE_KEY);
arrayList=Book.getAllBook(datasource.getConnection());
System.out.println("第一步,数据已经成功传递到Action,action="+action);
catch(Exception e)
e.printStackTrace();
System.out.println("数据库连接出现异常");


pb=new PageBean(arrayList);
Book[] books=pb.getBooks();
pb.description();
request.setAttribute("result",books);
request.setAttribute("page",pb);


else

if(action=="nextPage" || action.equals("nextPage"))

System.out.println("参数action="+action);
System.out.println("函数pb.getNextPage()准备执行");
Book[]books=pb.getNextPage();
request.setAttribute("page",pb);
request.setAttribute("result",books);

if(action=="previousPage" || action.equals("previousPage"))

System.out.println("参数action="+action);
System.out.println("函数pb.getPreviouspage()准备执行");
Book[] books=pb.getPreviouspage();
request.setAttribute("page",pb);
request.setAttribute("result",books);



return (mapping.findForward("success"));



4 pagetest.jsp
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ page contentType="text/html; charset=gb2312" language="java"%>

<html:html locale="true">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>

<table border="1">
<tr><th>书名</th><th>作者</th><th>价格</th></tr>
<logic:present name="result">
<logic:iterate id="book" name="result" type="bean.Book" >
<logic:present name="book">
<tr>
<td><bean:write name="book" property="bookname" /></td>
<td> <bean:write name="book" property="author" /></td>
<td><bean:write name="book" property="price" /></td>
</tr>
</logic:present>
</logic:iterate>
</logic:present>
</table>
<logic:equal name="page" property="hasNextPage" value="true">
<html:link page="/page.do?action=nextPage">nextPage</html:link>
</logic:equal>
<logic:equal name="page" property="hasPreviousPage" value="true">
<html:link page="/page.do?action=previousPage">PreviousPage</html:link>
</logic:equal>
共有数据总数<bean:write name="page" property="totalRows"/>;
共分<bean:write name="page" property="totalPages"/>页,当前是第
<bean:write name="page" property="currentPage"/>页
</body>
</html:html>

5 struts-config.xml
<?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">

<struts-config>
<data-sources>
<data-source key="dataSource" type="org.apache.commons.dbcp.BasicDataSource">
<set-property property="driverClassName" value="com.microsoft.jdbc.sqlserver.SQLServerDriver"/>
<set-property property="url" value="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=eBookStore;SelectMethod=cursor"/>
<set-property property="username" value="limq"/>
<set-property property="password" value="1"/>
<set-property property="maxActive" value="10"/>
<set-property property="maxWait" value="5000"/>
<set-property property="defaultAutoCommit" value="true"/>
<set-property property="defaultReadOnly" value="false"/>
</data-source>
</data-sources>
<form-beans>
</form-beans>
<global-forwards>
</global-forwards>
<action-mappings>
<action path="/page" type="page.PageListAction" scope="request">
<forward name="success" path="/pagetest.jsp"/>
</action>
</action-mappings>
<controller>
</controller>
</struts-config>

6 建立eBookStore数据库,以及表book(name,author,parce);其中数据的配置可以根据你的不同情况在struts-config.xml中而定。

7 Constants.java

package comm;

/**
* this interface provides the constant string for applicator constant
*/
public class Constants
/**
* name of the User Object in HttpSession
*/
public static String USER_KEY="user";
/**
* dataSource name
*/
public static String DATASOURCE_KEY="dataSource";
参考技术A 执行的sql得到的rs交给你一分页方法,有分页方法对rs进行分页,代码有点多,放不下

公司不能上qq
参考技术B 大哥问你个问题,分页跟框架有什么关系,是sql语句实现的分页. 参考技术C 前2楼的
楼主好好看看
会有收获得

Struts2 + Spring + Hibernate 分页

【中文标题】Struts2 + Spring + Hibernate 分页【英文标题】:Struts2 + Spring4 + Hibernate3 pagination 【发布时间】:2015-09-24 02:51:32 【问题描述】:

我正在使用 MVC 架构模式开发一个 Web 应用程序。

Struts2(2.3.24 版)用于业务逻辑和表示层 Spring(4.1.0 版)是依赖注入引擎 Hibernate(版本 3.6.10)用于数据层。

我必须创建一个PaginationFactory 类,我可以动态地将其用于应用程序的各个部分。我在 google 和 *** 上有几个例子……但大多是像 this question 这样的老东西。

关于如何使用更现代的东西来实现此功能的任何想法?也许有JQueryAjax 作为支持?

【问题讨论】:

我正在查看Criteria API 文档...可以是一个好的开始吗? 您是刚开始,还是已经开发了应用程序?这个堆栈是公司标准吗? +1 为 2.3.24 :) 但现在看来,这似乎有点太宽泛了...... 不,我刚开始,它是一个医疗软件,所以有很多类型的表格,文档等...需要很好的分页,提前谢谢,如果您需要更多信息告诉我! 你到底在问什么?链接到一些分页器?是旧约。如何实现自己的分页?太宽泛了。 @IlGala 如果你刚开始,我建议你使用完整的 Java EE(除了 Struts2 over JSF2...)并使用 Struts2 + CDI (对于 DI,而不是 Spring)+ JPA 2(使用 Hibernate 作为实现)。然后阅读this 以及所有答案以在 JPA 中实现分页。 【参考方案1】:

我建议你使用 Spring Data Jpa,它已经实现了分页。

您的存储库将如下所示:

public interface MedicamentRepository extends JpaRepository<Medicament, Integer> 

例如,如果您不需要 JpaRepository 提供的某些方法,您可以扩展 PagingAndSortingRepository 接口。

public class SomeClass

@Autowired
public MedicamentRepository medicamentRepo; 

 public void someMethod()
//in spring data jpa, page count starts from 0; 
 PageRequest pageRequest = new PageRequest(pageNumber, 
pageSize); //also have sorting

org.springframework.data.domain.Page<Medicament> page = medicamentRepo.findAll(pageRequest);

    

你可以阅读更多here

【讨论】:

以上是关于struts分页代码的主要内容,如果未能解决你的问题,请参考以下文章

Hibernate+Spring+Struts2整合开发中的一个分页显示方案(转载)

JQueryPagination分页插件,ajax从struts请求数据

Struts+Hibernate+jsp页面 实现分页

Struts2 + Spring + Hibernate 分页

Hibiernate+struts2分页

struts2之使用oracle分页(10)