jsp 如何将查询结果实现分页,最好简单易懂…

2025-01-23 05:28:08
推荐回答(2个)
回答1:

jsp中分页最快捷的办法是用分页组件:
分页组件代码使用taglib实现的:
<%@ tag language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="/WEB-INF/tld/c.tld" prefix="c"%>
<%@ attribute name="curIndex" type="java.lang.Long" required="true"%>
<%@ attribute name="pageSize" type="java.lang.Long" required="true"%>
<%@ attribute name="pagerRange" type="java.lang.Long" required="true"%>
<%@ attribute name="totalPage" type="java.lang.Long" required="true"%>
<%@ attribute name="formId" type="java.lang.String" required="true"%>
<%
long begin = Math.max(1, curIndex - pagerRange/2);
long end = Math.min(begin + (pagerRange-1),totalPage);

request.setAttribute("p_begin", begin);
request.setAttribute("p_end", end);
%>



<% if (curIndex!=1){%>


<%}else{%>


<%}%>












<% if (curIndex!=totalPage){%>


<%}else{%>


<%}%>




首页 上一页 首页 上一页 ${i} ${i} 下一页 末页 下一页 末页 共${totalPage}页 跳转到:"/>页 每页:


jsp中使用方法:

<%@ taglib uri="/WEB-INF/tld/c.tld" prefix="c"%>
<%@ taglib uri="/WEB-INF/tld/fmt.tld" prefix="fmt"%>
<%@ taglib tagdir="/WEB-INF/tags" prefix="tags"%>












用户名: "/>




















用户名称 操作内容 操作时间
${log.userName} ${log.result}



回答2:

<%@ page language="java" import="java.util.*,java.sql.ResultSet" contentType="text/html; charset=utf-8"%>
<%@page import="com.dao.TrainingDAO"%>
<%@page import="com.db.DBUtil"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
ResultSet rs = null;
TrainingDAO dao = new TrainingDAO();

System.out.println("初始访问,加载全部数据");
//查询数据
rs = dao.find();

//设置每张网页显示三笔记录(每页显示的记录数)
int PageSize=30;

//设置欲显示的页数(初始页)
int ShowPage=1;

//ResultSet的记录笔数(总记录数)
int RowCount=0;

//ResultSet分页后的总数(总页数)
int PageCount=0;
try{
//将指标移至最后一条记录
rs.last();

//获取记录总数

RowCount=rs.getRow();

}catch(Exception ex){
out.print("查询数据库连接失败,请稍后重试。");
}

//计算显示的页数(关键)
PageCount=((RowCount%PageSize)==0?(RowCount/PageSize):(RowCount/PageSize)+1);

String ToPage=request.getParameter("ToPage");

//判断是否取得ToPage参数
if(ToPage!=null)
{
//取得指定显示的分页页数
ShowPage=Integer.parseInt(ToPage);

//下面的语句判断用户输入的页数是否正确
if(ShowPage>=PageCount)
{
ShowPage=PageCount;
}
else if(ShowPage<=0)
{
ShowPage=1;
}
}

%>






培训查询











培训信息查询




















姓名 会员证号 培训名称
事务所名称 年度




















<%

String pname = "";
String gender = "";
String age = "";
String post = "";
String mc = "";
String rank = "";
String member = "";
String isps = "";
String t_Name = "";
String t_money = "";
String t_times = "";
String t_year = "";

//计算欲显示页的第一笔记录位置
rs.absolute((ShowPage-1)*PageSize+1);
//while(rs.next()){
for(int i=1;i<=PageSize;i++){

pname = dao.formatString(rs.getString("pname"));
gender = dao.formatString(rs.getString("gender"));
age = dao.formatString(rs.getString("age"));
post = dao.formatString(rs.getString("post"));
mc = dao.formatString(rs.getString("mc"));
rank = dao.formatString(rs.getString("rank"));
member = dao.formatString(rs.getString("member"));
if(rs.getString("ispass").equals("1")){
isps = "是";
}else isps ="否";
t_Name = dao.formatString(rs.getString("t_Name"));
t_money = dao.formatString(rs.getString("t_money"));
t_times = dao.formatString(rs.getString("t_times"));
t_year = dao.formatString(rs.getString("t_year"));
%>














<%
if(!rs.next())
{
//跳出for循环
break;
}
}
DBUtil.closeConnection();
%>
姓名 性别 年龄 职务 事务所名称 学历 会员证号 是否通过 培训名称 培训费 培训课时 时间
<%=pname %> <%=gender %> <%=age %> <%=post %> <%=mc %> <%=rank %> <%=member %> <%=isps %> <%=t_Name %> <%=t_money %> <%=t_times %> <%=t_year %>








共有<%=RowCount %>条数据,当前在第<%=ShowPage %>页,共<%=PageCount %>页
第一页
<%
//判断当前是否在第一页,不是第一页,则显示到第一页与下一页的连接
if(ShowPage!=1)
{
%>
上一页

<%
}
//判断是否在最后一页,是,则显示到最后一页和下一页
if(ShowPage!=PageCount)
{
%>

下一页

最后一页

<%
}
%>



onafterpaste="this.value=this.value.replace(/\D/g,'')" style="height:20px;width:30px">页
GO