`
zengbo0710
  • 浏览: 414510 次
社区版块
存档分类
最新评论

解决 Struts 分页显示

阅读更多

一 开发环境

Elicpse+Struts Studio+SqlServer2000+Tomcat。

二 开发思路

既然讲的是Struts,那自然离不了MVC,分页显示也是如此。

1 建立适当的模型组件,对应你要查询数据库中的表。这部分由我们熟悉的javaBean来充当。并在其中建立数据库查询方法,该方法需要一个java.sql.Conntection类型的参数,并返回一个ArrayList。在本例中为 Book.java

2 建立分页所需要的模型组件,也是由javaBean来充当,通过由Book中提供的ArrayList来构造。本例中为 PageBean.java.。

3建立控制器组件,这部分由Struts 中的Action来实现。主要负责将实例化Book,并利用返回的ArrayList对象,构造PageBean。以及接收由视图传递而来的action参数。从而在PageBean对象中调用不同的方法,该方法返回Book[] 对象。最后将 Book[]和PageBean放入request中。本例中为PageListAction.java。

4建立视图组件,这部分由jsp来充当,为了不出现java 代码,我们使用Struts提供的标签库,主要负责从request中取出刚刚放入的对象,通过反复调用PageListAction以及action参数,而实现分页显示。本例中为pagetest.jsp.

5 建立并配置struts-config.xml。

6 建立数据库。

三 实例代码

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;
/**
 * @author 李敏强
 * 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";
}

 

 

一 开发环境

Elicpse+Struts Studio+SqlServer2000+Tomcat。

二 开发思路

既然讲的是Struts,那自然离不了MVC,分页显示也是如此。

1 建立适当的模型组件,对应你要查询数据库中的表。这部分由我们熟悉的javaBean来充当。并在其中建立数据库查询方法,该方法需要一个java.sql.Conntection类型的参数,并返回一个ArrayList。在本例中为 Book.java

2 建立分页所需要的模型组件,也是由javaBean来充当,通过由Book中提供的ArrayList来构造。本例中为 PageBean.java.。

3建立控制器组件,这部分由Struts 中的Action来实现。主要负责将实例化Book,并利用返回的ArrayList对象,构造PageBean。以及接收由视图传递而来的action参数。从而在PageBean对象中调用不同的方法,该方法返回Book[] 对象。最后将 Book[]和PageBean放入request中。本例中为PageListAction.java。

4建立视图组件,这部分由jsp来充当,为了不出现java 代码,我们使用Struts提供的标签库,主要负责从request中取出刚刚放入的对象,通过反复调用PageListAction以及action参数,而实现分页显示。本例中为pagetest.jsp.

5 建立并配置struts-config.xml。

6 建立数据库。

三 实例代码

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;
/**
 * @author 李敏强
 * 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";
}

 

 

分享到:
评论

相关推荐

    java web中的struts分页组件

    SSH框架则是Struts、Spring和Hibernate三个开源框架的组合,提供了数据持久化、业务逻辑处理和用户界面控制的完整解决方案。在大型Web应用中,分页功能是必不可少的,它能帮助优化用户体验,提高系统性能,防止一次...

    基于struts的分页显示

    在Web应用程序中,数据量较大时,一次性加载所有数据可能会导致页面加载速度慢,用户体验下降,这时就需要分页显示技术来解决这个问题。基于Struts实现的分页显示,能够有效地提高应用性能,使用户可以逐页浏览和...

    ajax+struts分页

    在Ajax+Struts分页中,主要涉及以下几个步骤: 1. **前端页面**:使用JavaScript和HTML构建用户界面。当用户点击分页链接时,会触发Ajax请求,而不是传统的页面跳转。 2. **Ajax请求**:通常使用JavaScript库如...

    struts2 +mysql 分页显示 源码

    总的来说,Struts2结合MySQL实现分页显示,涉及到的主要知识点包括:Struts2框架的工作原理、Action的设计与实现、数据库查询(特别是分页查询)、前端页面的渲染以及用户交互设计。通过对这些技术的熟练掌握,...

    Hibernate+struts分页

    本项目“Hibernate+Struts分页”是针对基于Sqlserver2000数据库的应用程序设计的,它整合了两个流行的Java开发框架——Hibernate(持久层框架)和Struts(MVC框架),以实现高效且用户友好的数据浏览功能。...

    Struts 分页经典代码

    本实例中的“Struts 分页经典代码”就是一种实用的分页解决方案,旨在提供良好的用户体验。 分页技术主要涉及以下几个关键知识点: 1. **请求参数与模型绑定**:在Struts中,通常会通过Action类接收HTTP请求参数,...

    struts1.2实现的简单分页代码

    Struts1.2是一个经典的Java Web...此外,随着技术的发展,现代Web框架如Spring Boot和前端框架Vue、React等提供了更强大和便捷的分页解决方案,但了解Struts1.2的基础分页实现对于理解Web开发历史和原理仍然很有价值。

    JQuery + Struts 分页

    结合使用,它们可以创建高效的分页解决方案。以下是关于"JQuery + Struts 分页"的相关知识点的详细说明。 首先,JQuery是一个轻量级的JavaScript库,它极大地简化了DOM操作、事件处理、动画以及Ajax交互。在分页...

    hibernate+struts后台分页

    结合这两者,我们可以创建出高效且可扩展的后台分页解决方案。 首先,让我们深入理解后台分页的原理。后台分页是指在服务器端处理数据分页,客户端只请求特定页面的数据。这样可以避免一次性加载大量数据导致的性能...

    struts分页

    因此,分页显示数据成为了一种常见的优化手段。通过分页,可以控制每次加载的数据量,减轻服务器压力,同时提升用户体验。 ### 实现Struts分页的关键步骤 #### 1. 数据访问对象(DAO) 数据访问对象是实现分页的...

    jquery java struts2 实现分页 非常好看的分页

    在IT行业中,分页是网页应用中不可或缺的功能,特别是在数据量较大的情况下,它能帮助用户更有效地浏览和管理信息。本教程将详细讲解如何利用jQuery、Java和Struts...这种架构可以提供一个既美观又高效的分页解决方案。

    用struts实现的分页

    Struts是Apache软件基金会(ASF)的一个开源项目,它是一个基于MVC...此外,随着技术的发展,现代的前端框架如React、Vue等,也提供了更丰富的分页组件,可以与后端Struts配合,实现更高效、更灵活的分页解决方案。

    分页显示数据技术

    在提供的文件中,"Struts + Hibernate分页显示.txt"可能包含了如何在Struts和Hibernate结合的项目中实现分页的示例代码和步骤;"Hibernate查询解决方案.txt"可能详细介绍了使用Hibernate解决各种查询问题,包括分页...

    struts2+spring+hibernate分页显示

    在这个“Struts2+Spring+Hibernate分页显示”的解决方案中,我们将深入探讨如何利用这三大框架实现数据的分页展示。 Struts2作为MVC(模型-视图-控制器)架构的一部分,主要负责处理HTTP请求,控制应用程序的流程。...

    JSP JDBC WEB STRUTS 分页综合实例1

    7. **创建分页视图**:在JSP页面上,使用EL(Expression Language)和JSTL(JavaServer Pages Standard Tag Library)标签库显示数据,并创建分页链接。例如,使用`c:forEach`循环遍历结果集,`fmt:formatNumber`...

    JSP JDBC WEB STRUTS 分页综合实例2

    综上所述,本"JSP JDBC WEB STRUTS 分页综合实例2"旨在教授如何将这些核心技术整合起来,构建一个能够高效、稳定处理大量数据分页展示的Web应用。通过学习和实践这个实例,开发者可以加深对Java Web开发的理解,提高...

    STRUTS分页

    总的来说,Struts分页涉及到前端界面的交互设计、后端数据的查询和封装、以及中间层的逻辑处理。理解并熟练掌握这些知识点,对于构建高性能、用户友好的Web应用至关重要。通过学习和实践,开发者可以创建出更加高效...

    Struts分页

    Struts分页是Java Web开发中的一个重要概念,特别是在处理大量数据展示时,为了提高用户体验,分页成为必不可少的功能。在J2EE环境下,Struts框架提供了处理分页的解决方案。Struts是一个开源的MVC(Model-View-...

    struts分页标签

    Struts框架提供了一套便捷的分页解决方案,允许开发者在JSP页面中轻松实现数据的分页显示。本文将深入探讨Struts分页标签的使用方法和核心概念。 首先,我们要了解Struts框架。Struts是一个开源的MVC(Model-View-...

Global site tag (gtag.js) - Google Analytics