struts分页
//学struts分页的时候做的 对数据库所有数据的一个分页显示 大概是不能正常运行了
fenye.jsp
<%@page pageEncoding="gb2312" %>
<html>
<body text=green ><center><br><br><br><br><br>
<a href="fenye.do?act=fenye">对数据库内所有的表进行分页</a>
</body>
</html>
struts-config.xml
<?xml version="1.0" encoding="gb2312" ?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
"http://struts.apache.org/dtds/struts-config_1_3.dtd">
<struts-config>
<form-beans>
<form-bean name="depForm" type="form.DepForm" />
<form-bean name="depupForm" type="form.DepupForm" />
<form-bean name="depreForm" type="form.DepReplaceForm" />
<form-bean name="pszcForm" type="form.PszcForm" />
</form-beans>
<action-mappings>
<!--==================================部门 查询结果 跳转到 修改=== -->
<action name="depupForm" type="action.I" path="/depup"
scope="session" parameter="su">
<forward name="dereplace" path="/dereplace.jsp" />
<forward name="fail" path="/fail.jsp" />
</action>
<!--================================部门 查询================== -->
<action name="depForm" type="action.I" path="/dep"
scope="session" parameter="str">
<forward name="cg" path="/cg.jsp" />
<forward name="fail" path="/fail.jsp" />
<forward name="desu" path="/desu.jsp" />
</action>
<!-- =============================部门修改===================== -->
<action name="depupForm" type="action.I" path="/depre"
scope="session" parameter="str">
<forward name="dereplace" path="/dereplace.jsp" />
<forward name="fail" path="/fail.jsp" />
</action>
<!-- ========================= 分页技术======================== -->
<action name="depupForm" type="page.PageListAction" path="/haha"
scope="session">
<forward name="pageresult" path="/pageresult.jsp" />
<forward name="fail" path="/fail.jsp" />
</action>
<!--- ======================帐号管理-注册====================== -->
<action name="depupForm" type="action.I" path="/ps"
scope="session" parameter="pass">
<forward name="zcre" path="/zcre.jsp" />
<forward name="fail" path="/fail.jsp" />
</action>
<!--================= 帐号注册-提交===========================-->
<action name="pszcForm" type="action.I" path="/pszc"
scope="session" parameter="pazc">
<forward name="success" path="/success.jsp" />
<forward name="fail" path="/fail.jsp" />
</action>
<!-- ========================= 分页技术======================== -->
<action name="depupForm" type="page.PageListAction" path="/fenye"
scope="session">
<forward name="main" path="/main.jsp" />
<forward name="fail" path="/fail.jsp" />
</action>
</action-mappings>
<message-resources parameter="" />
</struts-config>
PageListAction
package page;
import org.apache.struts.action.*;
import action.F;
import action.Jc;
import javax.servlet.http.*;
import java.util.*;
public class PageListAction extends Action {
List arrayList = new ArrayList();
PageBean pd;
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
String driver_url =request.getRemoteAddr();
String act;
String action;
String table;
act=request.getParameter("act");
table = request.getParameter("table");
action = request.getParameter("action");
if(act==null||act.equals(""))
{
/** 如果action 为空 ,即:没有点击上一页,也没有点击下一页_____判断此为页面的第一次连接 */
if (action == null || action.equals("null")) {
try {
arrayList = PageBean.getAllBook(table);
} catch (Exception e) {
System.err.println(e);
}
/** 初次连接时,设置当前页数为1 ,以后点击上一页 或者下一页时 根据当前页数 进行 ++或者--操作 */
pd = new PageBean(arrayList,table);
List list =new ArrayList();
list = pd.getBooks();
// if(list == null || list .size()<=0){
// return mapping.findForward("fail");
//
// }else{
//页面内容
request.setAttribute("list", pd.getBooks());
//有关当前页面的信息
request.setAttribute("page", pd);
//得到此表所有列名
request.setAttribute("lts", new F().getList(table));
// }
}
else {
/** 对 "点击下一页" 的处理 */
if (action == "nextPage" || action.equals("nextPage")) {
List list = pd.getNextPage();
request.setAttribute("list", list);
request.setAttribute("page", pd);
}
/** 对 "点击上一页" 的处理 */
if (action == "previousPage" || action.equals("previousPage")) {
List list = pd.getPreviousPage();
request.setAttribute("list", list);
request.setAttribute("page", pd);
}
}
}
else if(act == "fenye" || act.equals("fenye")){
List list =new ArrayList();
list = PageBean.getAllTables();
request.setAttribute("list", PageBean.getAllTables());
act=null;
return mapping.findForward("main");
}
return mapping.findForward("pageresult");
}
}
/**这个是pagebean类,主要负责分页算法和逻辑处理*/
package page;
import action.Jc;
import java.sql.ResultSet;
import java.util.*;
public class PageBean {
int currentPage = 1;// 当前页数
String table="";
public int totalPages = 0;// 总页数
int pageRecorders = 15;// 每页显示行数
int totalRows = 0;// 总行数
int pageStartRow = 0;// 每页的起始行数
int pageEndRow;// 每页的终止行数
boolean hasNextPage = false;// 是否有下一页
boolean hasPreviousPage = false;// 是否有前一页
List arrayList;
Iterator it;
public PageBean(List arrayList,String table) {
this.table = table ;
/**根据list 对第一次连接进行设置:
* |总页数|是否有上下页|起始行数|
* */
this.arrayList = arrayList;// 获得传来的list
totalRows = arrayList.size();// 总行数 = list 的长度
it = arrayList.iterator();// 迭代器
hasPreviousPage = false;// 是否有前一页
currentPage = 1;// 当前页数
if ((totalRows % pageRecorders) == 0) {// 如果 总行数 %每页显示行数 == 0
totalPages = totalRows / pageRecorders;// 总页数 = 总行数/每页显示行数
}
else {
totalPages = totalRows / pageRecorders + 1; // 总页数 = ( 总行数/每页显示行数)+1
}
/**根据当前页数 和总页数 判断 是否有下一页*/
if (currentPage >= totalPages) { // 如果当前页数 > = 总页数
hasNextPage = false; // 没有下一一页
}
else {
hasNextPage = true; // 有下一页
}
if (totalRows < pageRecorders) { // 如果 总行数小于每页显示行数
this.pageStartRow = 0;// 起始行数= 0
this.pageEndRow = totalRows;// 终止行数 =总行数
}
else {// 如果 总行数 大于 每页显示行数
this.pageStartRow = 0;// 起始行数= 0
this.pageEndRow = pageRecorders;// 终止行数 =每页显示数
}
}
public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;// 设置当前页数
}
public void setPageRecorders(int pageRecorders) {
this.pageRecorders = pageRecorders; // 设置每页显示数
}
public void setHasNextPage(boolean hasNextPage) {
this.hasNextPage = hasNextPage;// 设置 是否有下一页
}
public void setHasPreviosPage(boolean hasPreviosPage) {
this.hasPreviousPage = hasPreviousPage; // 设置是否有前一页
}
public String getCurrentPage() {
return this.toString(currentPage);// 获得当前页数
}
public String getTotalPages() {
return this.toString(totalPages); // 获得总页数
}
public String getTotalRow() {
return this.toString(totalRows);// 获得总行数
}
public int getPageRecorders() {
return pageRecorders;// 获得每页显示数
}
public int getPageEndRow() {
return pageEndRow;// 获得每页的终止数
}
public int getPageStartRow() {
return pageStartRow;// 获得每页的起始数
}
public boolean isHasNextPage() {
return hasNextPage; // 判断 是否有下一页
}
public boolean isHasPreviousPage() {
return hasPreviousPage; // 判断 是否有上一页
}
/**
* 下面的两个方法 是处理 点击(上一页|下一页)
* 首先获得 此页的页数 并判断是否有上下页
然后 根据页数,返回此页的信息*/
public List getNextPage() {// 获得下一页
currentPage = currentPage + 1;// 设置下一页的(当前页数)=当前页数+1
if ((currentPage - 1) > 0) {// 如果当前页数大于 1
hasPreviousPage = true;// 有上一页
}
else { // 如果当前页数小于等于 1
hasPreviousPage = false; // 没有上一页
}
if (currentPage >= totalPages) { // 如果 当前页数 大于 总页数
hasNextPage = false;// 没有下一页
}
else {// 如果 当前页数 小于 总页数
hasNextPage = true;// 有下一页
}
List list= getBooks();
return list;
}
public List getPreviousPage() {// 获得上一页
currentPage = currentPage - 1; // 当前页数 - 1
if (currentPage == 0) {// 如果当前页数为 0
currentPage = 1;// 当前页数 = 1
}
if (currentPage >= totalPages) {// 如果 当前页数 大于 总页数
hasNextPage = false;// 没有下一页
}
else {// 如果 当前页数 小于 总页数
hasNextPage = true;// 有下一页
}
if ((currentPage - 1) > 0) { // 如果当前页数大于 1
hasPreviousPage = true;// 有 上一页
}
else {// 如果当前页数小于 1
hasPreviousPage = false; // 没有上一页
}
List list= getBooks();
return list;
}
/**
* .----------------------------------------------------------------------------------------------------------- * * *
* -----------------------------------------------------------------------------------------------------------
*/
public List getBooks() {/** 此方法是获得一个(含有当前页 所有信息的)list*/
if (currentPage * pageRecorders < totalRows) {// 如果当前页数 * 每页显示行数 < 总行数
pageEndRow = currentPage * pageRecorders;// 每页的终止行数 = 页数 * 每页显示行数
pageStartRow = pageEndRow - pageRecorders;// 每页的起始行数 =每页的终止行数 -每页显示行数
}
else {// 如果当前页数 * 每页显示行数 >= 总行数
pageEndRow = totalRows;// 每页的终止行数 = 总行数
pageStartRow = pageRecorders * (totalPages - 1);// 每页的起始行数 =每页显示行数 *( 总页数 - 1 )
}
List list=new ArrayList();
for (int i = pageStartRow; i < pageEndRow; i++) {
if(arrayList.size()==0){
System.err.println("查询结果显示,此表中 没有任何信息!");
return null;
}
list.add(arrayList.get(i)) ;// 把每一行 放入另一list
}
return list;
}
public String toString(int temp) {
String str = Integer.toString(temp);// 把数字转成字符型
return str;
}
public String getTable() {
return table;
}
public void setTable(String table) {
this.table = table;
}
public int getTotalRows() {
return totalRows;
}
public void setTotalRows(int totalRows) {
this.totalRows = totalRows;
}
public void setHasPreviousPage(boolean hasPreviousPage) {
this.hasPreviousPage = hasPreviousPage;
}
public void setPageEndRow(int pageEndRow) {
this.pageEndRow = pageEndRow;
}
public void setPageStartRow(int pageStartRow) {
this.pageStartRow = pageStartRow;
}
public void setTotalPages(int totalPages) {
this.totalPages = totalPages;
}
public static List getAllBook(String table) throws Exception {
String sql = "select * from " + table;
return Jc.getResult(sql,table);
}
public static List getAllTables()throws Exception{
List list= new ArrayList();
String sql = "select * from information_schema.tables";
ResultSet rs = Jc.getResultSet(sql);
while(rs.next()){
String a = rs.getString("TABLE_SCHEMA");
String b =rs.getString("TABLE_NAME");
list.add(a+"."+b);
}
Jc.close();
return list;
}
}
数据库连接类
fenye.jsp
<%@page pageEncoding="gb2312" %>
<html>
<body text=green ><center><br><br><br><br><br>
<a href="fenye.do?act=fenye">对数据库内所有的表进行分页</a>
</body>
</html>
struts-config.xml
<?xml version="1.0" encoding="gb2312" ?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
"http://struts.apache.org/dtds/struts-config_1_3.dtd">
<struts-config>
<form-beans>
<form-bean name="depForm" type="form.DepForm" />
<form-bean name="depupForm" type="form.DepupForm" />
<form-bean name="depreForm" type="form.DepReplaceForm" />
<form-bean name="pszcForm" type="form.PszcForm" />
</form-beans>
<action-mappings>
<!--==================================部门 查询结果 跳转到 修改=== -->
<action name="depupForm" type="action.I" path="/depup"
scope="session" parameter="su">
<forward name="dereplace" path="/dereplace.jsp" />
<forward name="fail" path="/fail.jsp" />
</action>
<!--================================部门 查询================== -->
<action name="depForm" type="action.I" path="/dep"
scope="session" parameter="str">
<forward name="cg" path="/cg.jsp" />
<forward name="fail" path="/fail.jsp" />
<forward name="desu" path="/desu.jsp" />
</action>
<!-- =============================部门修改===================== -->
<action name="depupForm" type="action.I" path="/depre"
scope="session" parameter="str">
<forward name="dereplace" path="/dereplace.jsp" />
<forward name="fail" path="/fail.jsp" />
</action>
<!-- ========================= 分页技术======================== -->
<action name="depupForm" type="page.PageListAction" path="/haha"
scope="session">
<forward name="pageresult" path="/pageresult.jsp" />
<forward name="fail" path="/fail.jsp" />
</action>
<!--- ======================帐号管理-注册====================== -->
<action name="depupForm" type="action.I" path="/ps"
scope="session" parameter="pass">
<forward name="zcre" path="/zcre.jsp" />
<forward name="fail" path="/fail.jsp" />
</action>
<!--================= 帐号注册-提交===========================-->
<action name="pszcForm" type="action.I" path="/pszc"
scope="session" parameter="pazc">
<forward name="success" path="/success.jsp" />
<forward name="fail" path="/fail.jsp" />
</action>
<!-- ========================= 分页技术======================== -->
<action name="depupForm" type="page.PageListAction" path="/fenye"
scope="session">
<forward name="main" path="/main.jsp" />
<forward name="fail" path="/fail.jsp" />
</action>
</action-mappings>
<message-resources parameter="" />
</struts-config>
PageListAction
package page;
import org.apache.struts.action.*;
import action.F;
import action.Jc;
import javax.servlet.http.*;
import java.util.*;
public class PageListAction extends Action {
List arrayList = new ArrayList();
PageBean pd;
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
String driver_url =request.getRemoteAddr();
String act;
String action;
String table;
act=request.getParameter("act");
table = request.getParameter("table");
action = request.getParameter("action");
if(act==null||act.equals(""))
{
/** 如果action 为空 ,即:没有点击上一页,也没有点击下一页_____判断此为页面的第一次连接 */
if (action == null || action.equals("null")) {
try {
arrayList = PageBean.getAllBook(table);
} catch (Exception e) {
System.err.println(e);
}
/** 初次连接时,设置当前页数为1 ,以后点击上一页 或者下一页时 根据当前页数 进行 ++或者--操作 */
pd = new PageBean(arrayList,table);
List list =new ArrayList();
list = pd.getBooks();
// if(list == null || list .size()<=0){
// return mapping.findForward("fail");
//
// }else{
//页面内容
request.setAttribute("list", pd.getBooks());
//有关当前页面的信息
request.setAttribute("page", pd);
//得到此表所有列名
request.setAttribute("lts", new F().getList(table));
// }
}
else {
/** 对 "点击下一页" 的处理 */
if (action == "nextPage" || action.equals("nextPage")) {
List list = pd.getNextPage();
request.setAttribute("list", list);
request.setAttribute("page", pd);
}
/** 对 "点击上一页" 的处理 */
if (action == "previousPage" || action.equals("previousPage")) {
List list = pd.getPreviousPage();
request.setAttribute("list", list);
request.setAttribute("page", pd);
}
}
}
else if(act == "fenye" || act.equals("fenye")){
List list =new ArrayList();
list = PageBean.getAllTables();
request.setAttribute("list", PageBean.getAllTables());
act=null;
return mapping.findForward("main");
}
return mapping.findForward("pageresult");
}
}
/**这个是pagebean类,主要负责分页算法和逻辑处理*/
package page;
import action.Jc;
import java.sql.ResultSet;
import java.util.*;
public class PageBean {
int currentPage = 1;// 当前页数
String table="";
public int totalPages = 0;// 总页数
int pageRecorders = 15;// 每页显示行数
int totalRows = 0;// 总行数
int pageStartRow = 0;// 每页的起始行数
int pageEndRow;// 每页的终止行数
boolean hasNextPage = false;// 是否有下一页
boolean hasPreviousPage = false;// 是否有前一页
List arrayList;
Iterator it;
public PageBean(List arrayList,String table) {
this.table = table ;
/**根据list 对第一次连接进行设置:
* |总页数|是否有上下页|起始行数|
* */
this.arrayList = arrayList;// 获得传来的list
totalRows = arrayList.size();// 总行数 = list 的长度
it = arrayList.iterator();// 迭代器
hasPreviousPage = false;// 是否有前一页
currentPage = 1;// 当前页数
if ((totalRows % pageRecorders) == 0) {// 如果 总行数 %每页显示行数 == 0
totalPages = totalRows / pageRecorders;// 总页数 = 总行数/每页显示行数
}
else {
totalPages = totalRows / pageRecorders + 1; // 总页数 = ( 总行数/每页显示行数)+1
}
/**根据当前页数 和总页数 判断 是否有下一页*/
if (currentPage >= totalPages) { // 如果当前页数 > = 总页数
hasNextPage = false; // 没有下一一页
}
else {
hasNextPage = true; // 有下一页
}
if (totalRows < pageRecorders) { // 如果 总行数小于每页显示行数
this.pageStartRow = 0;// 起始行数= 0
this.pageEndRow = totalRows;// 终止行数 =总行数
}
else {// 如果 总行数 大于 每页显示行数
this.pageStartRow = 0;// 起始行数= 0
this.pageEndRow = pageRecorders;// 终止行数 =每页显示数
}
}
public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;// 设置当前页数
}
public void setPageRecorders(int pageRecorders) {
this.pageRecorders = pageRecorders; // 设置每页显示数
}
public void setHasNextPage(boolean hasNextPage) {
this.hasNextPage = hasNextPage;// 设置 是否有下一页
}
public void setHasPreviosPage(boolean hasPreviosPage) {
this.hasPreviousPage = hasPreviousPage; // 设置是否有前一页
}
public String getCurrentPage() {
return this.toString(currentPage);// 获得当前页数
}
public String getTotalPages() {
return this.toString(totalPages); // 获得总页数
}
public String getTotalRow() {
return this.toString(totalRows);// 获得总行数
}
public int getPageRecorders() {
return pageRecorders;// 获得每页显示数
}
public int getPageEndRow() {
return pageEndRow;// 获得每页的终止数
}
public int getPageStartRow() {
return pageStartRow;// 获得每页的起始数
}
public boolean isHasNextPage() {
return hasNextPage; // 判断 是否有下一页
}
public boolean isHasPreviousPage() {
return hasPreviousPage; // 判断 是否有上一页
}
/**
* 下面的两个方法 是处理 点击(上一页|下一页)
* 首先获得 此页的页数 并判断是否有上下页
然后 根据页数,返回此页的信息*/
public List getNextPage() {// 获得下一页
currentPage = currentPage + 1;// 设置下一页的(当前页数)=当前页数+1
if ((currentPage - 1) > 0) {// 如果当前页数大于 1
hasPreviousPage = true;// 有上一页
}
else { // 如果当前页数小于等于 1
hasPreviousPage = false; // 没有上一页
}
if (currentPage >= totalPages) { // 如果 当前页数 大于 总页数
hasNextPage = false;// 没有下一页
}
else {// 如果 当前页数 小于 总页数
hasNextPage = true;// 有下一页
}
List list= getBooks();
return list;
}
public List getPreviousPage() {// 获得上一页
currentPage = currentPage - 1; // 当前页数 - 1
if (currentPage == 0) {// 如果当前页数为 0
currentPage = 1;// 当前页数 = 1
}
if (currentPage >= totalPages) {// 如果 当前页数 大于 总页数
hasNextPage = false;// 没有下一页
}
else {// 如果 当前页数 小于 总页数
hasNextPage = true;// 有下一页
}
if ((currentPage - 1) > 0) { // 如果当前页数大于 1
hasPreviousPage = true;// 有 上一页
}
else {// 如果当前页数小于 1
hasPreviousPage = false; // 没有上一页
}
List list= getBooks();
return list;
}
/**
* .----------------------------------------------------------------------------------------------------------- * * *
* -----------------------------------------------------------------------------------------------------------
*/
public List getBooks() {/** 此方法是获得一个(含有当前页 所有信息的)list*/
if (currentPage * pageRecorders < totalRows) {// 如果当前页数 * 每页显示行数 < 总行数
pageEndRow = currentPage * pageRecorders;// 每页的终止行数 = 页数 * 每页显示行数
pageStartRow = pageEndRow - pageRecorders;// 每页的起始行数 =每页的终止行数 -每页显示行数
}
else {// 如果当前页数 * 每页显示行数 >= 总行数
pageEndRow = totalRows;// 每页的终止行数 = 总行数
pageStartRow = pageRecorders * (totalPages - 1);// 每页的起始行数 =每页显示行数 *( 总页数 - 1 )
}
List list=new ArrayList();
for (int i = pageStartRow; i < pageEndRow; i++) {
if(arrayList.size()==0){
System.err.println("查询结果显示,此表中 没有任何信息!");
return null;
}
list.add(arrayList.get(i)) ;// 把每一行 放入另一list
}
return list;
}
public String toString(int temp) {
String str = Integer.toString(temp);// 把数字转成字符型
return str;
}
public String getTable() {
return table;
}
public void setTable(String table) {
this.table = table;
}
public int getTotalRows() {
return totalRows;
}
public void setTotalRows(int totalRows) {
this.totalRows = totalRows;
}
public void setHasPreviousPage(boolean hasPreviousPage) {
this.hasPreviousPage = hasPreviousPage;
}
public void setPageEndRow(int pageEndRow) {
this.pageEndRow = pageEndRow;
}
public void setPageStartRow(int pageStartRow) {
this.pageStartRow = pageStartRow;
}
public void setTotalPages(int totalPages) {
this.totalPages = totalPages;
}
public static List getAllBook(String table) throws Exception {
String sql = "select * from " + table;
return Jc.getResult(sql,table);
}
public static List getAllTables()throws Exception{
List list= new ArrayList();
String sql = "select * from information_schema.tables";
ResultSet rs = Jc.getResultSet(sql);
while(rs.next()){
String a = rs.getString("TABLE_SCHEMA");
String b =rs.getString("TABLE_NAME");
list.add(a+"."+b);
}
Jc.close();
return list;
}
}
数据库连接类