拜读了
				bibiye
				的《一个高效简洁的
				Struts
				分页方法
				(
				原创
				)
				》后,根据
				bibiye
				的方法,自己修改了一下,也弄了一个
				struts
				下的分页,大家见笑了!
		
		
				
						
						 
				
		
		
				我的方法是,根据用户点击导航条上的页号
				(offset)
				,到
				DB
				中读取该页的数据
				(
				不是一次全部读出
				)
				,点到哪页读哪页的数据,
				JBX + tomcat + oracle
				下测试通过,数据库用的表是
				oracle
				的
				emp
				表。
		
		
				
						 
				
		
		
				********
				分页类
				Pager.java
				,负责生成分页导航条
				********
		
		
				
						 
				
		
		
				package page;
		
		
				
						 
				
		
		
				/**
		
		
				
						 * 
				分页代码
		
		
				
						 * <p>Title: 
				分页
				</p>
		
		
				
						 * <p>Description: </p>
		
		
				
						 * <p>Copyright: Copyright (c) 2005</p>
		
		
				
						 * <p>Company: BCS</p>
		
		
				
						 * @author Alex
		
		
				
						 * @version 1.0
		
		
				
						 */
		
		
				public class Pager {
		
		
				
						  private int offset;
		
		
				
						  private int size;
		
		
				
						  private int length;
		
		
				
						  private String url;
		
		
				
						  private String pageHeader;
		
		
				
						  public Pager(int offset, int size, int length, String url, String pageHeader) {
		
		
				
						    this.offset = offset;
		
		
				
						    this.size = size;
		
		
				
						    this.length = length;
		
		
				
						    this.url = url;
		
		
				
						    this.pageHeader = pageHeader;
		
		
				
						  }
		
		
				
						 
				
		
		
				
						  /**
		
		
				
						   * 
				返回分页导航条
		
		
				
						   * @param offset int 
				起始记录的位置
		
		
				
						   * @param size int 
				总记录数
		
		
				
						   * @param length int 
				步长
		
		
				
						   * @param url String .do
				的
				url
		
		
				
						   * @param pageHeader String 
				导航条的前缀文字提示
		
		
				
						   * @return String
		
		
				
						   */
		
		
				
						  public String getPageNavigation() {
		
		
				
						    String pageNavigation = ""; //
				最终返回的分页导航条
		
		
				
						    //
				记录数超过一页
				,
				需要分页
		
		
				
						    if (size > length) {
		
		
				
						      String pref; //
				前缀
		
		
				
						      if (url.indexOf("?") > -1) {
		
		
				
						        //
				如果
				url
				中已经包含了其他的参数
				,
				就把
				offset
				参数接在后面
		
		
				
						        pref = "&";
		
		
				
						      }
		
		
				
						      else {
		
		
				
						        //
				如果
				url
				中没有别的参数
		
		
				
						        pref = "?";
		
		
				
						      }
		
		
				
						      //
				如果导航条包含
				header
		
		
				
						      if (pageHeader != null && pageHeader.length() > 0) {
		
		
				
						        pageNavigation = pageHeader + " : ";
		
		
				
						      }
		
		
				
						      //
				如果不是第一页
				,
				导航条将包含“
				<<
				”
				(
				第一页
				)
				和“
				<
				”
				(
				前一页
				)
		
		
				
						      if (offset > 0) {
		
		
				
						        pageNavigation += "<a href='" + url + pref + "offset=0'>[<<]</a>\n" +
		
		
				
						            "<a href='" + url + pref + "offset=" + (offset - length) +
		
		
				
						            "'>[<]</a>\n";
		
		
				
						      }
		
		
				
						      //
				导航条中
				,
				排头的那一页的
				offset
				值
		
		
				
						      int startOffset;
		
		
				
						      //
				位于导航条中间的那一页的
				offset
				值
				(
				半径
				)
		
		
				
						      int radius = constants.MAX_PAGE_INDEX / 2 * length;
		
		
				
						      //
				如果当前的
				offset
				值小于半径
		
		
				
						      if (offset < radius || this.pageCount() <= constants.MAX_PAGE_INDEX) {
		
		
				
						        //
				那么第一页排头
		
		
				
						        startOffset = 0;
		
		
				
						      }
		
		
				
						      else if (offset < size - radius) {
		
		
				
						        startOffset = offset - radius;
		
		
				
						      }
		
		
				
						      else {
		
		
				
						        startOffset = (size / length - constants.MAX_PAGE_INDEX) * length;
		
		
				
						      }
		
		
				
						      for (int i = startOffset;
		
		
				
						           i < size && i < startOffset + constants.MAX_PAGE_INDEX * length;
		
		
				
						           i += length) {
		
		
				
						        if (i == offset) {
		
		
				
						          //
				当前页号
				,
				加粗显示
		
		
				
						          pageNavigation += "<b>" + (i / length + 1) + "</b>\n";
		
		
				
						        }
		
		
				
						        else {
		
		
				
						          //
				其他页号
				,
				包含超链接
		
		
				
						          pageNavigation += "<a href='" + url + pref + "offset=" + i + "'>" +
		
		
				
						              (i / length + 1) + "</a>\n";
		
		
				
						        }
		
		
				
						  
						    }
		
		
				
						      //
				如果不是最后一页
				,
				导航条将包含“
				>
				”
				(
				下一页
				)
				和“
				>>
				”
				(
				最后一页
				)
		
		
				
						      if (offset < size - length) {
		
		
				
						        pageNavigation += "<a href='" + url + pref + "offset=" +
		
		
				
						            (offset + length) + "'>[>]</a>\n" +
		
		
				
						            "<a href='" + url + pref + "offset=" + lastPageOffset() +
		
		
				
						            "'>[>>]</a>\n";
		
		
				
						      }
		
		
				//      System.out.println("radius : " + radius);
		
		
				//      System.out.println("start offset : " + startOffset);
		
		
				
						      return pageNavigation;
		
		
				
						    }
		
		
				
						    //
				记录不超过一页
				,
				不需要分页
		
		
				
						    else {
		
		
				
						      return "";
		
		
				
						    }
		
		
				
						  }
		
		
				
						 
				
		
		
				
						  /**
		
		
				
						   * 
				返回分页后的总页数
		
		
				
						   * @param size int 
				总记录数
		
		
				
						   * @param length int 
				每页的记录数
		
		
				
						   * @return int
		
		
				
						   */
		
		
				
						  public int pageCount() {
		
		
				
						    int pagecount = 0;
		
		
				
						    if (size % length == 0) {
		
		
				
						      pagecount = size / length;
		
		
				
						    }
		
		
				
						    else {
		
		
				
						      pagecount = size / length + 1;
		
		
				
						    }
		
		
				
						    return pagecount;
		
		
				
						  }
		
		
				
						 
				
		
		
				
						  /**
		
		
				
						   * 
				返回最后一页的记录数
		
		
				
						   * @param size int 
				总记录数
		
		
				
						   * @param length int 
				每页的记录数
		
		
				
						   * @return int
		
		
				
						   */
		
		
				
						  public int lastPageSize() {
		
		
				
						    int lastpagesize = 0;
		
		
				
						    if (size % length == 0) {
		
		
				
						      lastpagesize = length;
		
		
				
						    }
		
		
				
						    else {
		
		
				
						      lastpagesize = size % length;
		
		
				
						    }
		
		
				
						    return lastpagesize;
		
		
				
						  }
		
		
				
						 
				
		
		
				
						  /**
		
		
				
						   * 
				返回最后一页的起始记录位置
		
		
				
						   * @param size int 
				总记录数
		
		
				
						   * @param length int 
				每页的记录数
		
		
				
						   * @return int
		
		
				
						   */
		
		
				
						  public int lastPageOffset() {
		
		
				
						    return size - lastPageSize();
		
		
				
						  }
		
		
				
						 
				
		
		
				
						  public int getOffset() {
		
		
				
						    return offset;
		
		
				
						  }
		
		
				
						 
				
		
		
				
						  public void setOffset(int offset) {
		
		
				
						    this.offset = offset;
		
		
				
						  }
		
		
				
						 
				
		
		
				
						  public int getSize() {
		
		
				
						    return size;
		
		
				
						  }
		
		
				
						 
				
		
		
				
						  public void setSize(int size) {
		
		
				
						    this.size = size;
		
		
				
						  }
		
		
				
						 
				
		
		
				
						  public int getLength() {
		
		
				
						    return length;
		
		
				
						  }
		
		
				
						 
				
		
		
				
						  public void setLength(int length) {
		
		
				
						    this.length = length;
		
		
				
						  }
		
		
				
						 
				
		
		
				
						  public String getUrl() {
		
		
				
						    return url;
		
		
				
						  }
		
		
				
						 
				
		
		
				
						  public void setUrl(String url) {
		
		
				
						    this.url = url;
		
		
				
						  }
		
		
				
						 
				
		
		
				
						  public String getPageHeader() {
		
		
				
						    return pageHeader;
		
		
				
						  }
		
		
				
						 
				
		
		
				
						  public void setPageHeader(String pageHeader) {
		
		
				
						    this.pageHeader = pageHeader;
		
		
				
						  }
		
		
				}
		
		
				
						 
				
		
		
				********
				数据处理类
				empDAO.java
				,负责访问
				DB
				,获取当前页面需要显示的记录
				********
		
		
				
						 
				
		
		
				package page;
		
		
				
						 
				
		
		
				import java.sql.*;
		
		
				import java.util.*;
		
		
				
						 
				
		
		
				public class empDAO {
		
		
				
						  public empDAO() {
		
		
				
						  }
		
		
				
						 
				
		
		
				
						  /**
		
		
				
						   * 
				从
				offset
				位置起始
				,
				返回
				length
				条记录
		
		
				
						   * @param offset int 
				起始的记录位置
		
		
				
						   * @param length int 
				步长
		
		
				
						   * @param conn Connection 
				数据库连接
		
		
				
						   * @return ArrayList
		
		
				
						   */
		
		
				
						  public ArrayList findAllEmp(int offset, int length, Connection conn) throws
		
		
				
						      SQLException {
		
		
				
						    PreparedStatement ps = null;
		
		
				
						    ResultSet rs = null;
		
		
				
						    ArrayList emps = new ArrayList();
		
		
				
						    empVO empvo = null;
		
		
				
						    String strSql = "select empno, ename from emp where rowid not in (select rowid from emp where rownum <= ?) and rownum <= ?";
		
		
				
						   
						 try {
		
		
				
						      ps = conn.prepareStatement(strSql);
		
		
				
						      ps.setInt(1, offset); //
				起始记录的位置
		
		
				
						      ps.setInt(2, length); //
				步长
		
		
				
						      rs = ps.executeQuery();
		
		
				
						      while (rs != null && rs.next()) {
		
		
				
						        empvo = new empVO();
		
		
				
						        empvo.setEmpno(rs.getInt("empno"));
		
		
				
						        empvo.setEname(rs.getString("ename"));
		
		
				
						        emps.add(empvo);
		
		
				
						      }
		
		
				
						    }
		
		
				
						    catch (SQLException ex) {
		
		
				
						      ex.printStackTrace();
		
		
				
						      throw ex;
		
		
				
						    }
		
		
				
						    return emps;
		
		
				
						  }
		
		
				
						 
				
		
		
				
						  /**
		
		
				
						   * 
				返回总的记录数
		
		
				
						   * @param conn Connection
		
		
				
						   * @throws SQLException
		
		
				
						   * @return int
		
		
				
						   */
		
		
				
						  public int getRsTotalCount(Connection conn) throws SQLException {
		
		
				
						    PreparedStatement ps = null;
		
		
				
						    ResultSet rs = null;
		
		
				
						    int rsCount = 0;
		
		
				
						    String strSql = "select count(empno) as empCount from emp";
		
		
				
						    try {
		
		
				
						      ps = conn.prepareStatement(strSql);
		
		
				
						      rs = ps.executeQuery();
		
		
				
						      if (rs != null && rs.next()) {
		
		
				
						        rsCount = rs.getInt("empCount");
		
		
				
						      }
		
		
				
						    }
		
		
				
						    catch (SQLException ex) {
		
		
				
						      ex.printStackTrace();
		
		
				
						      throw ex;
		
		
				
						    }
		
		
				
						    return rsCount;
		
		
				
						  }
		
		
				}
		
		
				
						 
				
		
		
				********
				业务类
				empBO.java
				,调用
				empDAO
				类
				********
		
		
				
						 
				
		
		
				package page;
		
		
				
						 
				
		
		
				import java.util.*;
		
		
				
						 
				
		
		
				/**
		
		
				
						 * BO
				类
		
		
				
						 * <p>Title: 
				分页
				</p>
		
		
				
						 * <p>Description: </p>
		
		
				
						 * <p>Copyright: Copyright (c) 2005</p>
		
		
				
						 * <p>Company: BCS</p>
		
		
				
						 * @author Alex
		
		
				
						 * @version 1.0
		
		
				
						 */
		
		
				public class empBO {
		
		
				
						  private DBPool db = DBPool.newInstance();
		
		
				
						  private empDAO empdao = new empDAO();
		
		
				
						 
				
		
		
				
						  public empBO() {
		
		
				
						  }
		
		
				
						 
				
		
		
				
						  /**
		
		
				
						   * 
				从
				offset
				位置起始
				,
				返回
				length
				条记录
		
		
				
						   * @param offset int 
				起始
		
		
				
						   * @param length int 
				步长
		
		
				
						   * @throws Exception
		
		
				
						   * @return ArrayList
		
		
				
						   */
		
		
				
						  public ArrayList findAllEmp(int offset, int length) throws Exception {
		
		
				
						    ArrayList emps = new ArrayList();
		
		
				
						    try {
		
		
				
						      emps = empdao.findAllEmp(offset, length, db.getConnection());
		
		
				
						    }
		
		
				
						    catch (Exception ex) {
		
		
				
						      throw ex;
		
		
				
						    }
		
		
				
						    finally {
		
		
				
						      db.release();
		
		
				
						    }
		
		
				
						    return emps;
		
		
				
						  }
		
		
				
						 
				
		
		
				
						  /**
		
		
				
						   * 
				返回总的记录数
		
		
				
						   * @throws Exception
		
		
				
						   * @return int
		
		
				
						   */
		
		
				
						  public int getRsTotalCount() throws Exception {
		
		
				
						    int rsCount = 0;
		
		
				
						    try {
		
		
				
						      rsCount = empdao.getRsTotalCount(db.getConnection());
		
		
				
						    }
		
		
				
						    catch (Exception ex) {
		
		
				
						      throw ex;
		
		
				
						    }
		
		
				
						    finally {
		
		
				
						      db.release();
		
		
				
						    }
		
		
				
						    return rsCount;
		
		
				
						  }
		
		
				}
		
		
				
						 
				
		
		
				
						 
				
		
		
				********ActionForm
				类
				empForm.java********
		
		
				
						 
				
		
		
				package page;
		
		
				
						 
				
		
		
				import javax.servlet.http.*;
		
		
				
						 
				
		
		
				import org.apache.struts.action.*;
		
		
				
						 
				
		
		
				public class empForm
		
		
				
						    extends ActionForm {
		
		
				
						  private int offset; //
				起始记录的位置
				//
				每页显示的记录数
		
		
				
						  public ActionErrors validate(ActionMapping actionMapping,
		
		
				
						                               HttpServletRequest httpServletRequest) {
		
		
				
						    /**@todo: finish this method, this is just the skeleton.*/
		
		
				
						    return null;
		
		
				
						  }
		
		
				
						 
				
		
		
				
						  public void reset(ActionMapping actionMapping,
		
		
				
						                    HttpServletRequest httpServletRequest) {
		
		
				
						    this.offset = 0; //
				记录默认从第一条开始显示
		
		
				
						  }
		
		
				
						 
				
		
		
				
						  public int getOffset() {
		
		
				
						    return offset;
		
		
				
						  }
		
		
				
						 
				
		
		
				
						  public void setOffset(int offset) {
		
		
				
						    this.offset = offset;
		
		
				
						  }
		
		
				
						 
				
		
		
				}
		
		
				
						 
				
		
		
				
						 
				
		
		
				********Action
				类
				empAction.java
				,控制器,调用
				BO
				类,
				Pager
				类
				********
		
		
				
						 
				
		
		
				package page;
		
		
				
						 
				
		
		
				import java.util.*;
		
		
				import javax.servlet.http.*;
		
		
				
						 
				
		
		
				import org.apache.struts.action.*;
		
		
				
						 
				
		
		
				/**
		
		
				
						 * 
				分页测试的
				Action
		
		
				
						 * <p>Title: 
				分页
				</p>
		
		
				
						 * <p>Description: </p>
		
		
				
						 * <p>Copyright: Copyright (c) 2005</p>
		
		
				
						 * <p>Company: BCS</p>
		
		
				
						 * @author Alex
		
		
				
						 * @version 1.0
		
		
				
						 */
		
		
				public class empAction
		
		
				
						    extends Action {
		
		
				
						 
				
		
		
				
						  public ActionForward execute(ActionMapping actionMapping,
		
		
				
						                               ActionForm actionForm,
		
		
				
						                               HttpServletRequest httpServletRequest,
		
		
				
						                               HttpServletResponse httpServletResponse) {
		
		
				
						    empForm empform = (empForm) actionForm;
		
		
				
						    return performList(actionMapping, actionForm, httpServletRequest,
		
		
				
						                       httpServletResponse);
		
		
				
						  }
		
		
				
						 
				
		
		
				
						  private ActionForward performList(ActionMapping actionMapping,
		
		
				
						                                    ActionForm actionForm,
		
		
				
						                                    HttpServletRequest request,
		
		
				
						                                    HttpServletResponse response) {
		
		
				
						    try {
		
		
				
						      empBO empbo = new empBO();
		
		
				
						      //
				获取外部传进来的起始记录号
		
		
				
						      int offset = ( (empForm) actionForm).getOffset();
		
		
				
						      //
				获取每页的记录数
		
		
				
						      int pagesize = constants.PAGE_SIZE;
		
		
				
						      //
				获取记录集合
				,
				从
				offset
				开始
				,
				取
				length
				条记录
		
		
				
						      ArrayList emps = empbo.findAllEmp(offset, pagesize);
		
		
				
						      //
				计算所有记录的条数
				(
				总记录数
				)
		
		
				
						      int size = empbo.getRsTotalCount();
		
		
				
						      //
				外部
				url
				地址
				,
				得到形如
				: http://localhost:8088/bugMIS/showlist.do 
				的
				String
		
		
				
						      String url = request.getContextPath() + actionMapping.getPath() + ".do";
		
		
				
						      //
				实例化分页类
		
		
				
						      Pager p = new Pager(offset, size, pagesize, url, "Page Navigation");
		
		
				
						      //
				获取分页导航条
		
		
				
						      //String pageNavigation = p.getPageNavigation();
		
		
				
						      //
				将
				url
				字符串和记录集合
				,
				存入
				request
				中
		
		
				
						      request.setAttribute("pager", p);
		
		
				
						      request.setAttribute("emps", emps);
		
		
				
						    }
		
		
				
						    catch (Exception e) {
		
		
				
						      e.printStackTrace();
		
		
				
						      return actionMapping.findForward("failure");
		
		
				
						    }
		
		
				
						    return actionMapping.findForward("success");
		
		
				
						  }
		
		
				}
		
		
				
						 
				
		
		
				
						 
				
		
		
				********
				数据库连接池类
				DBPool.java
				,可以使用
				tomcat
				的连接池,也可以不用,这里关闭了
				********
		
		
				
						 
				
		
		
				package page;
		
		
				
						 
				
		
		
				import java.sql.*;
		
		
				import javax.naming.*;
		
		
				import javax.sql.*;
		
		
				
						 
				
		
		
				import org.apache.commons.logging.*;
		
		
				
						 
				
		
		
				/**
		
		
				
						 * 
				系统连接池类
		
		
				
						 * <p>Title: Gantoo@91.com</p>
		
		
				
						 * <p>Description: </p>
		
		
				
						 * <p>Copyright: Copyright (c) 2005</p>
		
		
				
						 * <p>Company: BCS</p>
		
		
				
						 * @author Alex
		
		
				
						 * @version 1.0
		
		
				
						 */
		
		
				public class DBPool {
		
		
				
						  Log log = LogFactory.getLog("DBPool"); //
				日志机
		
		
				
						  private DBPool() {
		
		
				
						  }
		
		
				
						 
				
		
		
				
						  private Connection conn = null;
		
		
				
						 
				
		
		
				
						  /* true:
				使用连接池
		
		
				
						     false:
				不使用连接池
				,
				采用
				JDBC
				直接连接
				 */
		
		
				
						  private final static boolean USE_DB_POOL = false;
		
		
				
						  private final static String jndi_DataSource = "jdbc/BugMIS_ora";
		
		
				
						  private final static String jdbcdriver =
		
		
				
						      "oracle.jdbc.driver.OracleDriver";
		
		
				
						  private final static String url =
		
		
				
						      "jdbc:oracle:thin:@localhost:1521:myo9";
		
		
				
						  private final static String user = "scott";
		
		
				
						  private final static String pass = "tiger";
		
		
				
						 
				
		
		
				
						  public static DBPool newInstance() {
		
		
				
						    return new DBPool();
		
		
				
						  }
		
		
				
						 
				
		
		
				
						  /**
		
		
				
						   * 
				切换是否使用连接池
		
		
				
						   * */
		
		
				
						  public Connection getConnection() {
		
		
				
						    if (USE_DB_POOL) {
		
		
				
						      conn = getConnectionByDBPool();
		
		
				
						    }
		
		
				
						    else {
		
		
				
						      conn = getConnectionDirect();
		
		
				
						    }
		
		
				
						    return conn;
		
		
				
						  }
		
		
				
						 
				
		
		
				
						  /**
		
		
				
						   * 
				直接采用
				JDBC
				连接数据库
		
		
				
						   * */
		
		
				
						  private Connection getConnectionDirect() {
		
		
				
						    try {
		
		
				
						      Class.forName(jdbcdriver).newInstance();
		
		
				
						      conn = DriverManager.getConnection(url, user, pass);
		
		
				
						    }
		
		
				
						    catch (SQLException ex) {
		
		
				
						      log.error("Error Connection! " + ex.getMessage());
		
		
				
						    }
		
		
				
						    catch (ClassNotFoundException ex) {
		
		
				
						      log.error("Driver Not Found! " + ex.getMessage());
		
		
				
						    }
		
		
				
						    catch (IllegalAccessException ex) {
		
		
				
						      log.error(ex.getMessage());
		
		
				
						    }
		
		
				
						    catch (InstantiationException ex) {
		
		
				
						      log.error(ex.getMessage());
		
		
				
						    }
		
		
				
						    return conn;
		
		
				
						  }
		
		
				
						 
				
		
		
				
						  /**
		
		
				
						   * 
				采用连接池
		
		
				
						   * */
		
		
				
						  private Connection getConnectionByDBPool() {
		
		
				
						    try {
		
		
				
						      Context initCtx = new InitialContext();
		
		
				
						      Context ctx = (Context) initCtx.lookup("java:/comp/env");
		
		
				
						      DataSource ds = (DataSource) ctx.lookup(jndi_DataSource);
		
		
				
						      conn = ds.getConnection();
		
		
				
						    }
		
		
				
						    catch (NamingException ex) {
		
		
				
						      log.error("Data Source Not Found! " + ex.getMessage());
		
		
				
						      //System.out.println("
				未找到数据源
				" + ex.getMessage());
		
		
				
						    }
		
		
				
						    catch (SQLException ex1) {
		
		
				
						      log.error("Error Connection! " + ex1.getMessage());
		
		
				
						      //System.out.println("
				错误的数据连接
				" + ex1.getMessage());
		
		
				
						    }
		
		
				
						    return conn;
		
		
				
						  }
		
		
				
						 
				
		
		
				
						  /**
		
		
				
						   * 
				释放连接
		
		
				
						   * */
		
		
				
						  public void release() {
		
		
				
						    try {
		
		
				
						      if (!conn.isClosed()) {
		
		
				
						        conn.close();
		
		
				
						      }
		
		
				
						    }
		
		
				
						    catch (SQLException ex) {
		
		
				
						      log.error("Connection Closing Error! " + ex.getMessage());
		
		
				
						      //System.out.println("
				连接关闭失败
				" + ex.getMessage());
		
		
				
						    }
		
		
				
						  }
		
		
				}
		
		
				
						 
				
		
		
				
						 
				
		
		
				********
				包含常量的类
				constants.java
				,常量
				********
		
		
				
						 
				
		
		
				package page;
		
		
				
						 
				
		
		
				/**
		
		
				
						 * 
				定义工程中公用的常量
		
		
				
						 * <p>Title: 
				分页
				</p>
		
		
				
						 * <p>Description: </p>
		
		
				
						 * <p>Copyright: Copyright (c) 2005</p>
		
		
				
						 * <p>Company: BCS</p>
		
		
				
						 * @author Alex
		
		
				
						 * @version 1.0
		
		
				
						 */
		
		
				public final class constants {
		
		
				
						  public static final int MAX_PAGE_INDEX = 5; //
				页脚显示多少页
		
		
				
						  public static final int PAGE_SIZE = 2; //
				每页的记录数
		
		
				}
		
		
				
						 
				
		
		
				
						 
				
		
		
				********
				测试
				jsp
				页面
				index.jsp
				,为了方便测试,嵌入了
				java
				代码,能显示就行
				********
		
		
				
						 
				
		
		
				<%@ 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=GBK" import="java.util.*,page.*"%>
		
		
				<html:html>
		
		
				<head>
		
		
				<title></title>
		
		
				<style type="text/css">
		
		
				.pt9 {  font: 10pt "
				宋体
				"}
		
		
				body { font: 10pt "
				宋体
				" ; margin: 15px}
		
		
				td {  font-size: 10pt}
		
		
				a:hover {  font-size: 10pt; color: red; text-decoration: underline}
		
		
				a:link {  font-size: 10pt; color: blue; text-decoration: underline}
		
		
				a:active {  font-size: 10pt; color: blue; text-decoration: underline}
		
		
				a:visited { font-size: 10pt; color: blue; text-decoration: underline }
		
		
				</style>
		
		
				</head>
		
		
				<body bgcolor="#ffffff">
		
		
				
						 
				
		
		
				<p><a href="Show">http://localhost:8088/page/showEmp.do?offset=0">Show Me All Of The Emps</a></p>
		
		
				
						 
				
		
		
				<logic:present name="emps">
		
		
				
						  <%
		
		
				
						  ArrayList emps = (ArrayList)request.getAttribute("emps");
		
		
				
						  Iterator it = emps.iterator();
		
		
				
						  empVO empvo;
		
		
				
						  while(it!=null && it.hasNext()){
		
		
				
						    empvo = (empVO)it.next();
		
		
				
						    out.print(empvo.getEmpno() + "  ");
		
		
				
						    out.print(empvo.getEname() + "<br>");
		
		
				
						  }
		
		
				
						    out.print("
				当前页有
				 " + emps.size() + " 
				条记录
				<br>");
		
		
				
						    out.print("<p>");
		
		
				
						  %>
		
		
				</logic:present>
		
		
				
						 
				
		
		
				<logic:present name="pager">
		
		
				
						  <%
		
		
				
						  Pager pager = (Pager)request.getAttribute("pager");
		
		
				
						  out.print(pager.getPageNavigation() + "<p>");
		
		
				
						  out.print("
				共有记录
				 " + pager.getSize() + " 
				条
				<br>");
		
		
				
						  out.print("
				每页有
				 " + pager.getLength() + " 
				条记录
				<br>");
		
		
				
						  out.print("
				共分
				 " + pager.pageCount() + " 
				页
				<br>");
		
		
				
						  %>
		
		
				</logic:present>
		
		
				</body>
		
		
				</html:html>
		
		
				
						 
				
		
		
				********
				配置文件
				struts-config.xml********
		
		
				
						 
				
		
		
				<?xml version="1.0" encoding="UTF-8"?>
		
		
				<!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>
		
		
				
						  <form-beans>
		
		
				
						    <form-bean name="empForm" type="page.empForm" />
		
		
				
						  </form-beans>
		
		
				
						  <action-mappings>
		
		
				
						    <action input="/index.jsp" name="empForm" path="/showEmp" scope="request" type="page.empAction" validate="false">
		
		
				
						      <forward name="faiure" path="/index.jsp" />
		
		
				
						      <forward name="success" path="/index.jsp" />
		
		
				
						    </action>
		
		
				
						  </action-mappings>
		
		
				</struts-config>
		
		
				
						 
				
		
	posted on 2007-08-10 11:42 
蛮哥♂枫 阅读(312) 
评论(0)  编辑  收藏  所属分类: 
Java