SP中分页在实际开发中很常用,在这里教大家怎样在JSP中实现分页效果。分别用超链接、按钮和下拉列表框三种形式来实现。
只需掌握三点,在JSP中实现分页就可以轻松搞定。简而言之,就是"123原则",
即1条SQL语句;2个方法;3条数显示数据。
首先,SQL语句在分页中的作用很重要,它的查询原理就是"不在前@条的前@条数据",所以涉及到两个查询变量:第1个变量为一页显示的条数(pageSize),第2个变量为动态的、变化的页数(pageDynamic);假定当前页面为pageNo,那么它们之间存在这样的关系:pageDynamic = pageSize*(pageNo-1);
示例代码:
select top (?) * from Product where productid not in (select top (?) productid from product order by productid)
其次,在业务逻辑中编写两个方法;第一个方法是用于分页查询的,返回一个List<>泛型集合对象,第二个方法返回数据库中一共有多少条数据,返回整型数据;
示例代码:
public List<Product> getProduct(int pageNo,int pageSize)
{
//创建一个ArrayList泛型集合对象
List<Product> products = new ArrayList<Product>();
//创建一条SQL语句
String sql = "select top (?) * from Product where productid not in (select top (?) productid from product order by productid)";
try {
conn = getConn(); //得到数据库连接
pstmt = conn.prepareStatement(sql); //取得pstmt对象
pstmt.setInt(1, pageSize);
pstmt.setInt(2, pageSize*(pageNo-1)); //设置参数
rs = pstmt.executeQuery(); //执行查询,将结果集赋给rs
while (rs.next())
{
//创建一个Product对象
Product pro = new Product();
//为数据设置值
pro.setProductId(rs.getString("productId"));
pro.setProductName(rs.getString("productName"));
pro.setProductPrice(rs.getString("productPrice"));
pro.setProductDescription(rs.getString("productDescription"));
products.add(pro);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return products;
}
public int getAllPages(int pageSize) //pageSize为每页显示的条数
{
int result = 0; //返回值
try
{
conn = getConn(); //获得数据库连接
//查询出数据表中的全部数据条数,在此必须写"as a(a为变量)",否则rs无法接收整型值
String sql = "select count(*) as a from product";
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
if (rs.next())
{
result = rs.getInt("a");
}
}
catch (Exception ex)
{
ex.printStackTrace();
}
finally
{
this.closeAll(conn, pstmt, rs);
}
//如果总条数/每页显示条数能被整除,则返回该条数,如不能被整除,则返回总条数+1
return result%pageSize == 0?result/pageSize:result/pageSize+1;
}
之后,在JSP页面中编写doPages.jsp专门用于分页,并且将三条数据保存到session中,用于显示在页面中;
示例代码:doPages.jsp
<%@ page language="java" import="java.util.*,s2jsp.exercise.dao.*,s2jsp.exercise.entity.*" pageEncoding="UTF-8"%>
<%
int pageNo=1; //当前页(起始页)为1
//获得请求参数
String pagaNoString = request.getParameter("pageNo");
//请求参数不为空时,将参数赋给pageNo;
if (pagaNoString != null)
{
pageNo = Integer.parseInt(pagaNoString);
}
//创建ProductDao方法,用于调用分页查询方法
ProductDao pDao = new ProductDao();
List<Product> list = pDao.getProduct(pageNo,4); //当前页面显示的条数为4
int pages = pDao.getPages(4); //页数
//向session中保存3条数据
session.setAttribute("pageNo",pageNo);
session.setAttribute("list",list);
session.setAttribute("pages",pages);
response.sendRedirect("showAllProducts.jsp");
%>
之后,在显示页面调用doPages.jsp页面,显示出来之后,我们用3种方式进行分页操作:
1.超链接实现分页;
示例代码:
<a href="showAllProducts.jsp?pageNo=<%=pageNo==1?1:pageNo-1 %>">上一页</a>
<a href="showAllProducts.jsp?pageNo=<%=pageNo==pages?pages:pageNo+1 %>">下一页</a>
2.按钮实现;(按钮实现与下拉列表框的实现都得依赖于一个JavaScript方法)
JavaScript示例代码:
<script type="text/javascript">
function dopage(page)
{
location.href="showAllProducts.jsp?pageNo="+page;
}
</script>
示例代码:
<%if(pageNo==1){ %>
<input type="button" value="上一页" onClick="dopage(<%=pageNo==1?1:pageNo-1%>)" disabled="disabled"/>
<%}else{ %>
<input type="button" value="上一页" onClick="dopage(<%=pageNo==1?1:pageNo-1%>)"/>
<%} %>
<%if(pageNo==pages){ %>
<input type="button" value="下一页" onClick="dopage(<%=pageNo==pages?pages:pageNo+1%>)" disabled="disabled"/>
<%}else{ %>
<input type="button" value="下一页" onClick="dopage(<%=pageNo==pages?pages:pageNo+1%>)"/>
<%} %>
3.下拉列表框实现;
示例代码:
<select onChange="dopage(this.value)">
<%for(int i=1;i<=pages;i++){%>
<%if(pageNo==i) {%>
<option value="<%=i %>" selected="selected"><%=i %></option>
<%}else{ %>
<option value="<%=i %>"><%=i %></option>
<%}} %>
</select>
最后,JSP分页就完成了。记住:"123原则"。
分享到:
相关推荐
4. **前端页面实现**:在JSP页面上,我们需要显示当前页码、总页数以及上一页、下一页的链接。这些信息可以通过Struts的Action返回给JSP,然后用JSTL标签渲染。例如,可以创建一个`<c:if>`标签来判断是否为第一页或...
在分页场景下,JSP可以用来渲染分页链接和当前页数据。 总的来说,这个"Java分页大全"资源可以帮助开发者深入理解并熟练掌握Java Web开发中的分页技术,无论是基础的SQL分页,还是高级的框架集成和优化策略,都能...
在JSP页面上,你可以使用Struts的标签库(Struts Tags)来展示数据,并创建导航元素(如“上一页”、“下一页”按钮)。例如,`<logic:iterate>`标签可以用来遍历列表,而`<bean:write>`标签用于输出每个条目的字段...
6. **JSP和标签库**:在视图层,通常使用JSP和Struts提供的标签库(如DisplayTag或自定义标签)展示分页效果,包括页码、每页记录数选择、导航链接等。 7. **性能优化**:在实际应用中,为了提高分页性能,可能还...
资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。
《基于YOLOv8的智慧社区独居老人生命体征监测系统》(包含源码、可视化界面、完整数据集、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计
Android Studio Meerkat 2024.3.1 Patch 1(android-studio-2024.3.1.14-mac.dmg)适用于macOS Intel系统,文件使用360压缩软件分割成两个压缩包,必须一起下载使用: part1: https://download.csdn.net/download/weixin_43800734/90557060 part2: https://download.csdn.net/download/weixin_43800734/90557056
侧轴承杯加工工艺编制及夹具设计.zip
NASA数据集锂电池容量特征提取(Matlab完整源码和数据) 作者介绍:机器学习之心,博客专家认证,机器学习领域创作者,2023博客之星TOP50,主做机器学习和深度学习时序、回归、分类、聚类和降维等程序设计和案例分析,文章底部有博主联系方式。从事Matlab、Python算法仿真工作8年,更多仿真源码、数据集定制私信。
板料折弯机液压系统设计.zip
C6150车床的设计.zip
机器学习之KNN实现手写数字
python爬虫;智能切换策略,反爬检测机制
mpls-vpn-optionA-all
56tgyhujikolp[
GB 6442-86企业职工伤亡事故调查分析规则.pdf
汽车液压式主动悬架系统的设计().zip
2000-2024年各省专利侵权案件结案数数据 1、时间:2000-2024年 2、来源:国家知识产权J 3、指标:专利侵权案件结案数 4、范围:31省 5、用途:可用于衡量知识产权保护水平
资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。
内容概要:本文档详细复现了金融数学课程作业,涵盖欧式看涨期权定价和投资组合优化两大部分。对于欧式看涨期权定价,分别采用Black-Scholes模型和蒙特卡洛方法进行了计算,并对彩虹期权进行了基于最大值的看涨期权定价。投资组合优化部分则探讨了最小方差组合、给定收益的最小方差组合、最大效用组合以及给定风险的最大收益组合四种情形,还对比了拉格朗日乘数法和二次规划求解器两种方法。文中不仅提供了详细的MATLAB代码,还有详尽的中文解释,确保每一步骤清晰明了。 适合人群:金融工程专业学生、量化分析师、金融数学爱好者。 使用场景及目标:①帮助学生理解和掌握金融衍生品定价的基本原理和方法;②为从事量化分析的专业人士提供实用工具和技术支持;③作为教学材料辅助高校教师讲授相关内容。 其他说明:文档还包括了完整的论文结构建议,从封面页到结论,再到附录,涵盖了所有必要元素,确保提交的作业符合学术规范。此外,还特别强调了数据预处理步骤,确保代码可以顺利运行。