分页方法很多,这里简单介绍下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>
效果图
从而达到目的