1)建立适当的模型组件,对应你要查询数据库中的表,这部分由熟悉的JavaBean来充当.并在其中建立数据库查询方法,该方法需要一个java.sql.Conntection类型的参数,并返回一个ArrayList,在本例中为Book.java,另外还有一个数据库连接的Bean是SqlBean.java.<o:p></o:p>
2)建立分页所需要的模型组件,也是用JavaBean,通过Book提供的ArrayList来构造,这里用的是PageBean.java.
3)建立控制器组件,这部分由Struts的Action来实现,主要负责实例化Book,并利用返回的ArrayList对象,构造PageBean,以及接收由视图传递来的action参数,从而在PageBean对象中调用不同的方法,该方法返回Book[]对象,最后将Book[]和PageBean放入到request中.本Action为PageListAction.java.
4)建立视图组件,这部分JSP来实现,为了不出现JAVA代码,使用Struts提供的标签库,主要负责从Request中取出刚刚放入的对象,通过反复调用Action以及action参数,而实现分页显示,是pagetest.jsp.
5)建立并配置struts-config.xml和web.xml文件.
6)建立数据库.
我对代码进行了实现,调试通过.如果大家有更好的用Struts实现分页显示的算法可以给我留言,代码如下:<o:p></o:p>
struts-config.xml文件如下,这里配置了一个接收haha的请求提交给PageListAction<o:p></o:p>
<o:p></o:p>
<?xml version="1.0" encoding="UTF-8"?><o:p></o:p>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd"><o:p></o:p>
<struts-config><o:p></o:p>
<o:p></o:p>
<action-mappings><o:p></o:p>
<action path="/haha"<o:p></o:p>
type="page.PageListAction"<o:p></o:p>
scope="request"><o:p></o:p>
<forward name="success" path="/pagetest.jsp"/><o:p></o:p>
</action><o:p></o:p>
</action-mappings><o:p></o:p>
<message-resources parameter="ApplicationResources" /><o:p></o:p>
</struts-config><o:p></o:p>
……………………………………………………………………………….<o:p></o:p>
Web.xml文件如下,这里配置了Web的信息,基本都是由Eclipse完成的<o:p></o:p>
<o:p></o:p>
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>application</param-name>
<param-value>ApplicationResources</param-value>
</init-param>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>2</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
…………………………………………………………………………<o:p></o:p>
这个是控制器Action类<o:p></o:p>
<o:p></o:p>
package page;<o:p></o:p>
import org.apache.struts.action.*;<o:p></o:p>
import javax.servlet.http.*;<o:p></o:p>
import bean.Book;<o:p></o:p>
import java.util.*;<o:p></o:p>
import javax.sql.DataSource;<o:p></o:p>
public class PageListAction extends Action {<o:p></o:p>
ArrayList arrayList=new ArrayList();<o:p></o:p>
PageBean pd;<o:p></o:p>
public ActionForward execute(ActionMapping mapping,<o:p></o:p>
ActionForm form,<o:p></o:p>
HttpServletRequest request,<o:p></o:p>
HttpServletResponse response)<o:p></o:p>
throws Exception {<o:p></o:p>
String action;<o:p></o:p>
action=request.getParameter("action");<o:p></o:p>
if(action==null||action.equals("null")) {<o:p></o:p>
try {<o:p></o:p>
arrayList=Book.getAllBook();<o:p></o:p>
}<o:p></o:p>
catch(Exception e) {<o:p></o:p>
e.printStackTrace();<o:p></o:p>
}<o:p></o:p>
pd=new PageBean(arrayList);<o:p></o:p>
Book[] books=pd.getBooks();<o:p></o:p>
request.setAttribute("result",books);<o:p></o:p>
request.setAttribute("page",pd);<o:p></o:p>
}<o:p></o:p>
else {<o:p></o:p>
if(action=="nextPage"||action.equals("nextPage")) {<o:p></o:p>
Book[] books=pd.getNextPage();<o:p></o:p>
request.setAttribute("result",books);<o:p></o:p>
request.setAttribute("page",pd);<o:p></o:p>
}<o:p></o:p>
if(action=="previousPage"||action.equals("previousPage")) {<o:p></o:p>
Book[] books=pd.getPreviousPage();<o:p></o:p>
request.setAttribute("resule",books);<o:p></o:p>
request.setAttribute("page",pd);<o:p></o:p>
}<o:p></o:p>
}<o:p></o:p>
return mapping.findForward("success");<o:p></o:p>
}<o:p></o:p>
}<o:p></o:p>
………………………………………………………………………………….<o:p></o:p>
这个是pagebean类,主要负责分页算法和逻辑处理<o:p></o:p>
<o:p></o:p>
package page;<o:p></o:p>
<o:p></o:p>
import bean.Book;<o:p></o:p>
import java.util.*;<o:p></o:p>
<o:p></o:p>
public class PageBean {<o:p></o:p>
int currentPage=1;//当前页数<o:p></o:p>
public int totalPages=0;//总页数<o:p></o:p>
int pageRecorders=2;//每页显示数<o:p></o:p>
int totalRows=0;//总数据数<o:p></o:p>
int pageStartRow=0;//每页的起始数<o:p></o:p>
int pageEndRow;//每页的终止数<o:p></o:p>
boolean hasNextPage=false;//是否有下一页<o:p></o:p>
boolean hasPreviousPage=false;//是否有前一页<o:p></o:p>
ArrayList arrayList;<o:p></o:p>
Iterator it;<o:p></o:p>
<o:p></o:p>
public PageBean(ArrayList arrayList) {<o:p></o:p>
this.arrayList=arrayList;<o:p></o:p>
totalRows=arrayList.size();<o:p></o:p>
it=arrayList.iterator();<o:p></o:p>
hasPreviousPage=false;<o:p></o:p>
currentPage=1;<o:p></o:p>
if((totalRows%pageRecorders)==0) {<o:p></o:p>
totalPages=totalRows/pageRecorders;<o:p></o:p>
}<o:p></o:p>
else {<o:p></o:p>
totalPages=totalRows/pageRecorders+1;<o:p></o:p>
}<o:p></o:p>
if(currentPage>=totalPages) {<o:p></o:p>
hasNextPage=false;<o:p></o:p>
}<o:p></o:p>
else {<o:p></o:p>
hasNextPage=true;<o:p></o:p>
}<o:p></o:p>
if(totalRows<pageRecorders) {<o:p></o:p>
this.pageStartRow=0;<o:p></o:p>
this.pageEndRow=totalRows;<o:p></o:p>
}<o:p></o:p>
else {<o:p></o:p>
this.pageStartRow=0;<o:p></o:p>
this.pageEndRow=pageRecorders;<o:p></o:p>
}<o:p></o:p>
}<o:p></o:p>
<o:p></o:p>
public void setCurrentPage(int currentPage) {<o:p></o:p>
this.currentPage=currentPage;<o:p></o:p>
}<o:p></o:p>
public void setPageRecorders(int pageRecorders) {<o:p></o:p>
this.pageRecorders=pageRecorders;<o:p></o:p>
}<o:p></o:p>
public void setHasNextPage(boolean hasNextPage) {<o:p></o:p>
this.hasNextPage=hasNextPage;<o:p></o:p>
}<o:p></o:p>
public void setHasPreviosPage(boolean hasPreviosPage) {<o:p></o:p>
this.hasPreviousPage=hasPreviousPage;<o:p></o:p>
}<o:p></o:p>
<o:p></o:p>
public String getCurrentPage() {<o:p></o:p>
return this.toString(currentPage);<o:p></o:p>
}<o:p></o:p>
public String getTotalPages() {<o:p></o:p>
return this.toString(totalPages);<o:p></o:p>
}<o:p></o:p>
public String getTotalRow() {<o:p></o:p>
return this.toString(totalRows);<o:p></o:p>
}<o:p></o:p>
public int getPageRecorders() {<o:p></o:p>
return pageRecorders;<o:p></o:p>
}<o:p></o:p>
public int getPageEndRow() {<o:p></o:p>
return pageEndRow;<o:p></o:p>
}<o:p></o:p>
public int getPageStartRow() {<o:p></o:p>
return pageStartRow;<o:p></o:p>
}<o:p></o:p>
public boolean isHasNextPage() {<o:p></o:p>
return hasNextPage;<o:p></o:p>
}<o:p></o:p>
public boolean isHasPreviousPage() {<o:p></o:p>
return hasPreviousPage;<o:p></o:p>
}<o:p></o:p>
<o:p></o:p>
public Book[] getNextPage() {<o:p></o:p>
currentPage=currentPage+1;<o:p></o:p>
if((currentPage-1)>0) {<o:p></o:p>
hasPreviousPage=true;<o:p></o:p>
}<o:p></o:p>
else {<o:p></o:p>
hasPreviousPage=false;<o:p></o:p>
}<o:p></o:p>
if(currentPage>=totalPages) {<o:p></o:p>
hasNextPage=false;<o:p></o:p>
}<o:p></o:p>
else {<o:p></o:p>
hasNextPage=true;<o:p></o:p>
}<o:p></o:p>
Book[] books=getBooks();<o:p></o:p>
return books;<o:p></o:p>
}<o:p></o:p>
<o:p></o:p>
public Book[] getPreviousPage() {<o:p></o:p>
currentPage=currentPage-1;<o:p></o:p>
if(currentPage==0) {<o:p></o:p>
currentPage=1;<o:p></o:p>
}<o:p></o:p>
if(