java基础table分页

分页方法很多,这里简单介绍下java基础分页:

实体类

package entity;

public class OpType {
	private int opTypeID;
	private String opTypeCode;
	private String opTypeDesc;
	private String opTypeGroup;
	public int getOpTypeID() {
		return opTypeID;
	}
	public void setOpTypeID(int opTypeID) {
		this.opTypeID = opTypeID;
	}
	public String getOpTypeCode() {
		return opTypeCode;
	}
	public void setOpTypeCode(String opTypeCode) {
		this.opTypeCode = opTypeCode;
	}
	public String getOpTypeDesc() {
		return opTypeDesc;
	}
	public void setOpTypeDesc(String opTypeDesc) {
		this.opTypeDesc = opTypeDesc;
	}
	public String getOpTypeGroup() {
		return opTypeGroup;
	}
	public void setOpTypeGroup(String opTypeGroup) {
		this.opTypeGroup = opTypeGroup;
	}

}

工具类获取Connection

package utils;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

import oracle.jdbc.driver.OracleDriver;

public class DBUtils {

	public static Connection getConnection() {
		String url = "jdbc:oracle:thin:@129.1.101.39:1521:vmtdb01";
		String name = "customer";
		String pwd = "good1luck";
		Connection conn = null;
		try {
			// Class.forName(driver);
			new OracleDriver();
			conn = DriverManager.getConnection(url, name, pwd);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		return conn;
	}

}

核心部分,分页逻辑处理

package service;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import entity.OpType;

import sun.tools.jar.Main;
import utils.DBUtils;

public class DataFind {
	private  int pageRows = 10;//每页记录的条数
	private Connection conn;
	public Connection getConn() {
		return conn;
	}

	public void setConn(Connection conn) {
		this.conn = conn;
	}

	/**
	 * 查询
	 * 
	 * @param sql
	 * @return
	 */
	public ResultSet getData(String sql) {
	    conn = DBUtils.getConnection();
		Statement st = null;
		ResultSet rs = null;
		try {
			st = conn.createStatement();
			rs = st.executeQuery(sql);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 	
		return rs;
	}

	/**
	 * 分頁
	 * 
	 * @param pageCurrentNo
	 * @return
	 */
	public List<OpType> getOpTypeData(int pageCurrentNo) {
		
		List<OpType> rows = new ArrayList<OpType>();

		int pageBegin = (pageCurrentNo - 1) * pageRows + 1;// 每页开始记录序号,比如第一页是1-5行
		int pageEnd = pageCurrentNo * pageRows;// 每頁记录末尾编号
		String sql = "SELECT * FROM  (SELECT T.* , ROWNUM RM FROM AD_T13_USER_OP_TYPE T ) B  WHERE B.RM BETWEEN "
				+ pageBegin + " AND " + pageEnd;
		ResultSet rs = this.getData(sql);
		try {
			while (rs.next()) {
				OpType optype= new OpType();
				optype.setOpTypeID(rs.getInt(1));
				System.out.println(rs.getInt(1));
				optype.setOpTypeCode(rs.getString(2));
				optype.setOpTypeDesc(rs.getString(3));
				optype.setOpTypeGroup(rs.getString(4));
				rows.add(optype);
			}
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		try {
			conn.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		for(int i=0; i< rows.size(); i++){
			System.out.println(rows.get(i).getOpTypeID());
		}
		return rows;
	}

	/**
	 * 获取分成的页数总数
	 * 从过数据库查询获取总行数,再根据行数模每页的记录数获取
	 * @return
	 */
	public int pageCount() {
		String sql = "SELECT COUNT(*) FROM AD_T13_USER_OP_TYPE";
		int totalRows = 0;
		int pageCount = 0;
		try {
			ResultSet rs = this.getData(sql);
			while(rs.next()){
		    totalRows=rs.getInt(1);
			}
			pageCount = totalRows % pageRows == 0 ? (totalRows / pageRows)
					: ((totalRows / pageRows) + 1);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return pageCount;
	}
}

servlet部分

package servlet;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import entity.OpType;

import service.DataFind;

public class TableSplitServlet extends HttpServlet{

	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		resp.setContentType("text/html");
		resp.setCharacterEncoding("utf-8");
		DataFind df = new DataFind();
		String pageNo=req.getParameter("currentPageNo");
		int currentPageNo =1;
		if(pageNo!=null){
			currentPageNo=Integer.parseInt(pageNo);
		}
		ArrayList<OpType> optypes = (ArrayList<OpType>) df.getOpTypeData(currentPageNo);
		int pageCount =df.pageCount();
		req.setAttribute("optypes", optypes);
		req.setAttribute("currentPageNo", currentPageNo);
		req.setAttribute("pageCount", pageCount);
		req.getRequestDispatcher("/index.jsp").forward(req, resp);
		
	}

}

jsp页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'index.jsp' starting page</title>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
  </head>
  
  <body>
  <center>
    <table border="1px solid red" align="center">
    <tr><td>OpTypeId</td><td>OpTypeCode</td><td>OptypeDesc</td><td>OpTypeGround</td></tr>
    <c:forEach items="${optypes}" var="optypes">
    <tr>
    		<td>${optypes.opTypeID }</td>
    		<td>${optypes.opTypeCode }</td>
    		<td>${optypes.opTypeDesc }</td>
    		<td>${optypes.opTypeGroup }</td>
     </tr>
    </c:forEach>
    </table>
    <c:if test="${currentPageNo==1}">
    <a href="tss?currentPageNo=1">首页</a>
    <a href="tss?currentPageNo=${currentPageNo+1}">下一页</a>
    </c:if>
    <c:if test="${currentPageNo>1&¤tPageNo<pageCount}">
   <a href="tss?currentPageNo=1">首页</a>
   <a href="tss?currentPageNo=${currentPageNo-1}">上一页</a>
   <a href="tss?currentPageNo=${currentPageNo+1}">下一页</a>
   <a href="tss?currentPageNo=${pageCount}">尾页</a>
  </c:if>
   <c:if test="${currentPageNo==pageCount}">
 <a href="tss?currentPageNo=${currentPageNo-1}">上一页</a>
  <a href="tss?currentPageNo=${pageCount}">尾页</a>
  </c:if>
    </center>
  </body>
</html>

效果图







到此就结束了整个分页过程,本文主要技术点就是页面跟servlet的一个递归,通过servlet对页面传值,页面通过对servlet传参进行交互
从而达到目的
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值