jsp应用举例-分页的实现
分页实现是为了一个便于展示和使用的前台列表,同时为了减轻数据库的压力采用的化整为零的处理方式。
jdbc操作是将所有查询内容一次性读入内存;
在分页的实现中有两种方式:
1. 假分页: 使用算法实现分页的显示,要将全部内容都取出来,性能较低;
采用标准的SQL语句,可移植性强!
2. 真分页:直接从数据库中取出部分数据进行显示,性能较高,但需要使用特定的 分页的SQL语句,各个数据库的实现不一样,会造成可移植性降低!
——-实现假分页:
<%@page contentType="text/html;charset=utf8"%>
<%@page import="java.sql.*"%>
<%
// 解决提交时的中文乱码问题
request.setCharacterEncoding(“utf8”);
%>
<%
int currentPage = 1; // 表示当前所在的页是第一页
int lineSize = 5; // 每页显示5条记录
int allRecorder = 0; // 所有匹配记录数
int pageSize = 0; // 所有匹配记录数的总页数
%>
<%!
public static final String SPURL = “jdbc.jsp”; // 分页页面url
%>
<%
String str = request.getParameter(“cp”);
String str1 = request.getParameter(“ls”);
if (!(“”.equals(str) || str == null))
{
// cp表示控制端,可以控制当前页码
currentPage = Integer.parseInt(str);
}
if (!(“”.equals(str1) || str1 == null))
{
// ls表示控制端,可以控制页显示行数
lineSize = Integer.parseInt(str1);
}
%>
会员管理系统
<%
// 接收查询内容
String keyWord = request.getParameter(“keyword”);
if (keyWord == null)
{
keyWord = “”;
}
%>
增加用户
<%!
public static final String DBDRIVER = “com.mysql.jdbc.Driver”;
public static final String DBURL = “jdbc:mysql://localhost:3306/webuser”;
public static final String DBUSER = “root”;
public static final String DBPASS = “123456”;
%>
<%
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try
{
Class.forName(DBDRIVER);
conn = DriverManager.getConnection(DBURL, DBUSER, DBPASS);
// 计算匹配的记录数:
String sql = “SELECT COUNT(userID) FROM members WHERE userID LIKE upper(?) OR userName LIKE upper(?) OR userClass LIKE upper(?) OR score LIKE upper(?) OR hotNum LIKE upper(?) OR joinDay LIKE upper(?)”;
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, “%” + keyWord + “%”);
pstmt.setString(2, “%” + keyWord + “%”);
pstmt.setString(3, “%” + keyWord + “%”);
pstmt.setString(4, “%” + keyWord + “%”);
pstmt.setString(5, “%” + keyWord + “%”);
pstmt.setString(6, “%” + keyWord + “%”);
rs = pstmt.executeQuery();
if (rs.next())
{ // 匹配的记录数
allRecorder = rs.getInt(1);
}
// 总页数:
pageSize = (allRecorder + lineSize – 1) / lineSize;
if (pageSize < 1)
{
pageSize = 1 ; // 只有一页
}
rs.close(); // 关闭当前操作
pstmt.close(); // 为下面真正的查询准备!
%>
<%
String sql1 = “SELECT userID, userName, userClass, score, hotNum, joinDay FROM members WHERE userID LIKE upper(?) OR userName LIKE upper(?) OR userClass LIKE upper(?) OR score LIKE upper(?) OR hotNum LIKE upper(?) OR joinDay LIKE upper(?)”;
pstmt = conn.prepareStatement(sql1);
pstmt.setString(1, “%” + keyWord + “%”);
pstmt.setString(2, “%” + keyWord + “%”);
pstmt.setString(3, “%” + keyWord + “%”);
pstmt.setString(4, “%” + keyWord + “%”);
pstmt.setString(5, “%” + keyWord + “%”);
pstmt.setString(6, “%” + keyWord + “%”);
rs = pstmt.executeQuery();
%>
会员编号 | 会员姓名 | 会员级别 | 会员积分 | 精华贴数 | 注册日期 | 操作 | |||||||||||||||||
<%=userID%> | <%=userName%> | <%=userClass%> | <%=score%> | <%=hotNum%> | <%=joinDay%> |
<%@page import="java.sql.*"%> <% // 解决提交时的中文乱码问题 request.setCharacterEncoding(“utf8”); %>
会员管理系统增加用户<%! private static final String DBDRIVER = “com.mysql.jdbc.Driver”; private static final String DBURL = “jdbc:mysql://localhost:3306/webuser”; private static final String DBUSER = “root”; private static final String DBPASS = “123456”; private static final String CTRLURL = “contrl.jsp”; private int line = 5; %> <% // 接收查询内容 String keyWord = request.getParameter(“keyword”); if (keyWord == null) { keyWord = “”; } %> <% Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; int allRow = 0; // 总匹配记录数! int current = 1; try { Class.forName(DBDRIVER); conn = DriverManager.getConnection(DBURL, DBUSER, DBPASS); // 计算匹配的记录数: String sql = “SELECT COUNT(userID) FROM members WHERE userID LIKE upper(?) OR userName LIKE upper(?) OR userClass LIKE upper(?) OR score LIKE upper(?) OR hotNum LIKE upper(?) OR joinDay LIKE upper(?)”; pstmt = conn.prepareStatement(sql); pstmt.setString(1, “%” + keyWord + “%”); pstmt.setString(2, “%” + keyWord + “%”); pstmt.setString(3, “%” + keyWord + “%”); pstmt.setString(4, “%” + keyWord + “%”); pstmt.setString(5, “%” + keyWord + “%”); pstmt.setString(6, “%” + keyWord + “%”); rs = pstmt.executeQuery(); if (rs.next()) { // 匹配的记录数 allRow = rs.getInt(1); } rs.close(); // 关闭当前操作 pstmt.close(); // 为下面真正的查询准备! %> <% // 当前页 String str = request.getParameter(“cp”); if (!(“”.equals(str) || str == null)) { // cp表示控制端,可以控制当前页码 current = Integer.parseInt(str); } // 每页行数 String str1 = request.getParameter(“ls”); if (!(“”.equals(str1) || str1 == null)) { // ls表示控制端,可以控制页显示行数 line = Integer.parseInt(str1); } %> <%-- 此处需要分页,导入分页控制页面开始------------------------------------------ --%>
<%-- 此处需要分页,导入分页控制页面结束------------------------------------------- --%> <% int a = (current – 1) * line; // 打印起点 int b = line; // 打印行数 sql = “SELECT userID, userName, userClass, score, hotNum, joinDay FROM members WHERE userID LIKE upper(?) OR userName LIKE upper(?) OR userClass LIKE upper(?) OR score LIKE upper(?) OR hotNum LIKE upper(?) OR joinDay LIKE upper(?) limit ” + a + “,” + b; pstmt = conn.prepareStatement(sql); pstmt.setString(1, “%” + keyWord + “%”); pstmt.setString(2, “%” + keyWord + “%”); pstmt.setString(3, “%” + keyWord + “%”); pstmt.setString(4, “%” + keyWord + “%”); pstmt.setString(5, “%” + keyWord + “%”); pstmt.setString(6, “%” + keyWord + “%”); rs = pstmt.executeQuery(); %>
|