`
阅读更多
步骤:
1.	创建SepPage类,并设置有关的方法。
2.	在进行页面的转移时传递并当前的页面并传递参数。
3.	进行分页处理。
a.	计算总记录数
b.	怎么样进行分页
c.	首页显示处理
d.	传递有关参数
e.	获取有关传递的页面的参数

实例:以查询所有的用户信息为例子进行说明

package bean;
/**********************分页类描述************************/
public class SepPage 
{
	private int allRows; // 一共有多少行记录
	private int curPage = 1; // 当前页面
	private int rowPerPage = 8; // 一页显示多少行
	private int allPages; // 一共有多少页
	public int getAllRows() 
	{
		return allRows;
	}
	public void setAllRows(int allRows) 
	{
		this.allRows = allRows;
	}
	public int getCurPage() 
	{
		return curPage;
	}
	public void setCurPage(int curPage)
	{
		this.curPage = curPage;
	}
	public int getRowPerPage() 
	{
		return rowPerPage;
	}
	public void setRowPerPage(int rowPerPage) 
	{
		this.rowPerPage = rowPerPage;
	}
	public int getAllPages()
	{
		return allPages;
	}
	public void setAllPages(int allPages)
	{
		this.allPages = allPages;
	}
}


2.数据接收servlet
package servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import bean.DBOperationBean;
import java.util.*;
import util.Convert;
import java.sql.*;
import bean.*;
/**
 * servlet类,获取有关客户的信息并进行相关的处理
 * @author qihuasun
 */
public class CustomerServlet extends HttpServlet
{
	//查询所有sql语句
	public static final String SELECTBYALL="select * from SCOTT.EXRM_T_CUSTOMER order by CUM_FULLNAME ";
	public void doGet(HttpServletRequest request, HttpServletResponse response)
	throws ServletException, IOException 
	{
		 this.doPost(request, response);
	 }
	public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException 
	{
		//处理有关中文乱码问题
		request.setCharacterEncoding("GBK");
		response.setContentType("text/html;charset=GBK");
		response.setCharacterEncoding("GBK");
        String status=request.getParameter("status").trim();//获取页面传递的标志位status
        String path="error.jsp";
         if(!status.equals("")|| status!=null)
         {
       	
       	   if(status.equals("findall"))
       	  {
       		   DBOperationBean db=new DBOperationBean();
       		  String page=request.getParameter("curpage");
       		   try
		        {   
       			   int curPage = Integer.parseInt(request.getParameter("curPage"));
//获取页面传递的参数
	    	        SepPage pa=new SepPage();
	    	    	pa.setCurPage(curPage);
		    	    ArrayList al=db.query(this.SELECTBYALL,pa);
   		    	    if(al!=null)
   		    	     {
   		    	        // path="main.jsp";
   		    	          path="TestMain2.jsp";
   		    	          request.setAttribute("all",al);
   		    	     }
   		    	    else
   		    	    {
   		    	    	path="error.jsp";
   		    	    }
   		    	
		    	}
		    	catch(Exception ex)
		    	{
		    		ex.printStackTrace();
		    	}	
       	  }
       	  
         }
         request.getRequestDispatcher(path).forward(request,response);
        
	}

}

4.	数据访问类
 package bean;
import java.sql.*;

import javax.sql.*;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.naming.*;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import java.util.*;
import bean.SepPage;
/**
 * bean类,获取有关配置文件的信息的页面的信息,并进行有关的处理
 * @author qihuasun
 */
public class DBOperationBean 
{
	 //驱动
   private final String DBDRIVER	= "oracle.jdbc.driver.OracleDriver";
   // 数据库连接地址
   private final String DBURL		= "jdbc:oracle:thin:@127.0.0.1:1521:data";
	// 数据库用户名
   private final String DBUSER		= "SCOTT";
	// 数据库连接密码
   private final String DBPASSWORD	= "sqh";
	// 声明一个数据库连接对象
   private Connection conn			    = null ;
   private PreparedStatement  pstm=null;
   private ResultSet rs=null;
   public DBOperationBean()
   {
	   this.init();
   }
	private void init()  //从数据库连接属性XML配置文件中获取关于连接的信息
	{	 
		conn=new DBConnection().getConnection();
	}
	private Connection getConnection() //取得数据库连接并设置为当前连接
	{   
		 try
		 {
			  Class.forName(DBDRIVER); 
			 
			  conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD);// 连接数据库
			  System.out.println("connected");
		 }
		 catch(Exception ex)
		 {
			 ex.printStackTrace();
		 }
		  
		
	    return this.conn;
	}	   	 
	
	public ArrayList query(String sql,SepPage page) throws Exception
	{//执行查询,返回结果集
		ArrayList al=new ArrayList();
		try
		{
		    Connection conn=this.getConnection();
		    pstm = conn.prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE,
					ResultSet.CONCUR_READ_ONLY);
		    rs=pstm.executeQuery();
		    rs.last(); // 移动到最后一行
			page.setAllRows(rs.getRow()); // 设置一共有多少行记录
			// 算出有多少页
			if (page.getAllRows() % page.getRowPerPage()== 0) 
			{
				page.setAllPages(page.getAllRows() / page.getRowPerPage());
			}
			else 
			{
				page.setAllPages(page.getAllRows() / page.getRowPerPage() + 1);
			}
			//判定是否是第一页
			if (page.getCurPage() == 1) //当前页
			{
				// 将指针移动到此ResultSet对象的开头,正好位于第一行之前
				rs.beforeFirst();
			} 
			else 
			{
				// 将指针移动到此ResultSet对象的给定行编号
				rs.absolute((page.getCurPage() - 1) * page.getRowPerPage());
			}
			int i = 0;
		    while(rs.next() && i < page.getRowPerPage())
		    {
		    	 Customer cu=new Customer();
		    	 cu.setId(rs.getInt("CUM_ID"));
		    	 cu.setName(rs.getString("CUM_FULLNAME"));
		    	 cu.setAddress(rs.getString("CUM_MAINADDRESS"));
		    	 cu.setPhone(rs.getString("CUM_PHONE"));
		    	 al.add(cu);
		    	 i++;
		    }
		}
		catch(Exception ex)
		{
			 ex.printStackTrace();   
		}
		finally
		{
			   try
			   {
				   if(conn!=null)
				   {
					   this.conn.close();
				   }
			   }
			   catch(Exception ex)
			   {
				   ex.printStackTrace();   
			   }		   
		}
		return al;
	}
}

4、页面显示
  <%@ page language="java" contentType="text/html;charset=GBK"%>
<%@ page import="java.util.*,bean.SepPage"%>
<%@page import="bean.Customer;"%>

<%
	ArrayList all = (ArrayList) request.getAttribute("all");
	SepPage seppage = (SepPage) request.getAttribute("pagebean");
//获取设置的SepPage参数
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<title>客户管理</title>
		<link href="css/style.css" rel="stylesheet" />
	</head>
	<body>
		<div class="top" >
			『 作者管理 』
		</div>
		<div class="center">
			<form action="AuthorServlet?status=selectbylike&curPage=1" method="post" style="margin: 0;">
				<table class="fine" cellpadding="0" cellspacing="0">
					<tr>
						<td colspan="3" style="height: 40px;">

						</td>
					</tr>	
					<tr>
					   <td>
							  序号
						</td>
						<td>
							客户名称
						</td>
						<td>
							联系电话
						</td>
							<td>
							地址
						</td>
						&nbsp;&nbsp;&nbsp;&nbsp;<td>
							操作
						</td>
					</tr>
					<%
					    int i=0;
						if (all != null && all.size() != 0)
						 {
							for (int j=0;j<all.size();j++) 
							{  
							    i++;
							    Customer cus=(Customer)all.get(j);
								int authorId1=cus.getId();
								String str="找不到记录!!!";
								if(i==0)
								{ 
								    
								   
								   out.println("<scrtipt>alert('找不到记录')<script>");
								}
								else
								{%>
								   
						<tr>		  
					    <td>

							<%=i%>
						</td>
						<td>

							<%=cus.getName()%>
						</td>
						<td>
							<%=cus.getPhone()%>
						</td>
							<td>
							<%=cus.getAddress()%>
						</td>
						<td>
			 <td><a href="CustomerServlet?status=selectbyid&id=<%=cus.getId()%>">更新</a>&nbsp;&nbsp;&nbsp;&nbsp;</td>&nbsp;&nbsp;
						
			<td><a href="CustomerServlet?status=delete&id=<%=cus.getId()%>" onclick="if(confirm('是否删除业务信息?')){return   true;}else{return   false;}">删除</a>&nbsp;&nbsp;&nbsp;&nbsp;</td>
			<td><a href="addCus.jsp">添加</a></td>
					</tr>
								
							   <%}%>
					
					<%
						}//end for循环
					}//end if all != null
					%>
					<%
						if (seppage != null) {
					%>
					<tr>
						<td colspan="3"
							style="height: 32px; text-align: right; font-weight: bold; padding-right: 10px;">
							<font color="#FF5BAD">一共有&nbsp;<font color="red"><%=seppage.getAllPages()%></font>&nbsp;页&nbsp;&nbsp;当前在第&nbsp;<font
								color="red"><%=seppage.getCurPage()%></font>&nbsp;页&nbsp;&nbsp;&nbsp;&nbsp;</font>
							<%
								if (seppage.getCurPage() != 1) //不是第一页,则首页,上一页可用
								{
							%>
							<a href="CustomerServlet?status=selectbyall&curPage=1">首 页</a>&nbsp;&nbsp;
							<a
								href="CustomerServlet?status=selectbyall&curPage=<%=seppage.getCurPage()-1 %>">上一页</a>
							<%
								}
							%>
							&nbsp;&nbsp;
							<%
								if (seppage.getCurPage() != seppage.getAllPages())//不是最后一页,则有下一页和末页
								 {
							%>
							<a
								href="CustomerServlet?status=selectbyall&curPage=<%=seppage.getCurPage()+1 %>">下一页</a>&nbsp;&nbsp;
							<a
								href="CustomerServlet?status=selectbyall&curPage=<%=seppage.getAllPages() %>">末
								页</a>
							<%
								}
							%>

						</td>
					</tr>
					<%
						}
					%>
					</table>
					</form>
<form action="CustomerServlet?status=selectbylike&curPage=1" method="post" style="margin: 0;">
				<table class="fine" cellpadding="0" cellspacing="0">
					<tr>
						<td colspan="3" style="height: 40px;">
							<select style="height: 20px" name="sel">
								<option selected value="由客户姓名">
									由客户姓名
								</option>
								<option value="由地址">
									由地址
								</option>
							</select>
							&nbsp;&nbsp;
							<input  type="text" name="in" style="width: 200px" /><input  type="submit" value="查 找" />	
						</td>
					</tr>	
					</table>
					</form>
    </div>
	</body>

 

分享到:
评论

相关推荐

    88E1111_RGMII.zip_88E1111 vhdl_88e1111 驱动_RGMII模式_rgmii vhdl

    88E1111是Marvell公司推出的一款高性能的以太网PHY(物理层)芯片,常用于网络设备如路由器、交换机和嵌入式系统中。在RGMII(Reduced Gigabit Media Independent Interface)模式下,88E1111能够实现与MAC(媒体...

    数据手册中文88E1111

    88E1111是一款由Marvell公司生产的以太网物理层(PHY)芯片,主要应用于局域网络(LAN)的通信。这款芯片在设计上集成了多种功能,为网络设备提供高效的连接能力。本数据手册是针对中文读者特别准备的,旨在帮助那些...

    88E1111 完整版Datasheet 及应用原理图

    根据提供的文档信息,我们可以深入探讨88E1111这款芯片的相关知识点,包括其功能、内部结构以及应用原理。 ### 一、88E1111概述 88E1111是一款由Marvell公司生产的高性能物理层(PHY)收发器芯片,用于实现普通GMII...

    88E1111资料完整版

    88E1111是一款高性能的以太网控制器,由Marvell公司生产,广泛应用于网络设备、服务器和嵌入式系统中。本资料完整版包含了大量的技术文档、数据手册、设计指南和可能的固件更新,对于深入理解和使用88E1111芯片至关...

    88E1111手册/88E1111-SFP-原理图/88E1111-Fiber+Copper原理图

    88E1111是一款高性能的以太网控制器,主要应用于网络设备中,支持铜缆和光纤连接,提供灵活的网络接口解决方案。本压缩包包含的重要文档有88E1111的数据手册和相关的原理图设计,下面将详细阐述这些资料所涵盖的知识...

    88E1111官方手册及demo.rar

    88E1111是一款高性能的以太网控制器,由Marvell公司设计,广泛应用于各种网络设备,如路由器、交换机以及嵌入式系统。本资料包"88E1111官方手册及demo.rar"是针对该芯片的权威资源,包括详细的手册和设计示例,为...

    zynq++88E1111的lwip

    在本文中,我们将深入探讨基于Zynq7000 SoC平台的网络通信实现,特别是在结合88E1111以太网PHY芯片时的LWIP(Lightweight IP)协议栈应用。LWIP是一个开源的、轻量级的TCP/IP协议栈,适用于嵌入式系统,其目标是在...

    88E1111 datasheet_88e1111_88E1111_DS_

    《88E1111数据手册:深入解析网络接口控制器》 在现代网络设备中,88E1111是一款广泛应用的千兆以太网控制器,它为系统提供了高性能、低功耗的网络连接解决方案。这款芯片由Marvell公司设计,广泛应用于桌面电脑、...

    MV88E1111-Reference-Design-Schematics 参考设计 Marvell 88E1111PHY芯片

    《Marvell 88E1111 PHY芯片参考设计详解》 Marvell 88E1111是一款高性能的Gigabit Ethernet PHY(物理层)芯片,广泛应用于网络设备的接口设计中。该芯片支持GMII(GigaBit Media Independent Interface)协议,...

    88E1111原理图和PCB封装_如何对原理图进行封装

    88E1111是一款常见的以太网控制器,由Marvell公司生产,常用于网络设备和嵌入式系统中。在电子设计领域,理解88E1111的原理图和PCB封装至关重要,因为这关系到硬件设计的正确性和可靠性。本篇文章将深入探讨88E1111...

    88E1111_get_fpga_88e1111_

    88E1111是Marvell公司推出的一款高性能、低功耗的以太网控制器芯片,主要用于局域网(LAN)和广域网(WAN)应用。该芯片广泛应用于路由器、交换机、网络适配器等网络设备中,为用户提供高速、稳定的网络连接。在"88E...

    88E1111_数据手册(中文)-第一部分.zip_1111 1111_88e1111_china_marvell 88e111

    88E1111很难得的中文资料,方便学习

    基于ZYNQ的88E1111的RGMII to SGMII + BCM5396的网络通讯功能 (含uboot与kernel的修改

    在本文中,我们将深入探讨如何基于ZYNQ芯片实现88E1111的RGMII到SGMII转换,以及与BCM5396交换芯片的网络通信功能。这个过程涉及到对uboot和kernel的源码进行修改,以适应这种特殊的网络配置。 首先,ZYNQ的处理...

    Marvel 88e1111 datasheet 马威尔

    马威尔(Marvell)公司生产的88E1111是一款集成化的10/100/1000兆比特以太网收发器芯片。该芯片支持从10兆到1000兆不等的速率,并且集成了物理层(PHY)和介质访问控制层(MAC)的功能,使得芯片可以直接连接到...

    88E1111-datasheet-使用手册-数据手册

    从所提供的文件内容中,我们可以提取以下关于Marvell公司的88E1111以太网PHY(物理层)芯片的知识点。 知识点: 1. 产品型号及概述: 文件提到的“88E1111”是Marvell半导体公司生产的一款集成型的以太网PHY芯片,...

    Marvell 88E1111 数据手册(机密版)以及设计参考

    Marvell 88E1111是一款高性能的以太网控制器,专为网络设备的局域网(LAN)接口设计。这款芯片提供了全面的功能集,以满足现代网络设备的需求,如交换机、路由器和服务器等。数据手册是理解88E1111工作原理和实现...

    千兆以太网PHY芯片88e1111

    千兆以太网PHY芯片Marvell 88E1111是一款广泛应用的网络接口控制器,主要用于实现局域网(LAN)中的物理层传输。它符合IEEE 802.3ab千兆以太网标准,能够提供高速、稳定的数据传输服务。这款芯片集成了发送器、接收...

Global site tag (gtag.js) - Google Analytics