热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在JSP页面中实现检索数据的分页显示_MySQL

下面将通过一些例程来说明实现JSP页面翻页技术的实现。首先,在JSP中,通过JAVAservlet来检索数据,而用JSP来调用结果来显示。因而,此技术可分为两个部分(依赖关系):1.在服务器端的servlet中的实现要点:将查询条件保存到session中,取session中的查询条
下面将通过一些例程来说明实现JSP页面翻页技术的实现。

首先,在JSP中,通过JAVA servlet 来检索数据,而用JSP来调用结果来显示。

因而,此技术可分为两个部分(依赖关系):

1. 在服务器端的servlet 中的实现

要点:
& 将查询条件保存到session中,取session中的查询条件

& 设置Statement对象的MaxRows(确定一页显示多少行数据)

& 顺序地通过执行SQL语句查询数据,按maxRows 来检索一个maxRows的数据,

下一页再检索下一maxRows的数据,以此类推。

2. 在JSP中的显示实现

要点:

& 显示maxRows条数据

& 通过“下一页”按钮或超链再次调用刚才的servlet查询下一maxRows的数据

流程如图所示:

下面通过一个例程来说明(一个servlet程序和一个JSP程序):
l querymedicine. java (Medicine. querymedicine)
package Medicine;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import java.sql.*;
import Medicine.medicinelist;
import Medicine.searchData;
////////////////////////////////////////////////////
// 接---mutiquery.jsp页面,并从request中得到5条查询条件 ///
// 按条件查询药品,并将结果存进session的“medicinelist”中。 ///
// 张乾 2000年3月15日 ///
////////////////////////////////////////////////////
public class querymedicine extends HttpServlet {
private DBConnectionManager connMgr;
//Initialize global variables
public void init(ServletConfig config) throws ServletException {
super.init(config);
cOnnMgr= DBConnectionManager.getInstance();
}

//========================处理 HTTP Get 请求============================
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Statement stmt=null;
Connection con = connMgr.getConnection("medicine");
if (con == null) {
response.sendRedirect("/medicine/con_error.html");
return;
}

// ==================== 创建数据库Statement =============================
try {
stmt=con.createStatement();
}
catch (Exception e)
{
connMgr.freeConnection("medicine",con);
response.sendRedirect("/medicine/stmt_error.html");
return;
}

//-------------------------------------------------------------
long all_count=0; //存满足条件的药品总数

//===================从request中得到session======================
try{
HttpSession session = request.getSession(false);
if (session == null) {
connMgr.freeConnection("medicine",con);
response.sendRedirect("/medicine/session_error.html");
return;
}
//-----------------------------------------------------------

//======从“下一页”提交来的参数取得前页最后一条数据的药品编码=======
String ll_pos=request.getParameter("pos");
//如果pos=-1则表示要从头开始查
//----------------------------------------------------------
//=====================查询用的SQL语句串==========================
String sqlstatment="SELECT medicines.ypbm, medsmalltypes.zlmc, medsupertypes.clmc,
medtypes.dlmc, medicines.ypm, medicines.zyyx, medicines.ypzy FROM medicines,
medsmalltypes,medsupertypes,medtypes WHERE medicines.ypbm>"+ll_pos+"
and (( medsmalltypes.zlbm = medicines.zlbm ) and ( medsupertypes.clbm = medicines.clbm )
and ( medtypes.dlbm = medicines.dlbm ) and ( ( medicines.del_flag = 0 ) ";
//-----------------------------------------------------
String zlbm;
String dlbm;
String clbm;
String zyyx;
String ypm;
searchData slist=new searchData();
synchronized (session) {
slist=(searchData)session.getAttribute("searchList");
}
if(ll_pos.equals("-1")){

//===表示不是由“下一页”过来要从头开始查数据==========
if(slist!=null){
synchronized (session) {
session.removeAttribute("searchList");
}
}
slist=new searchData();

//=============从设置查询条件页面取得查询条件的参数===================
zlbm=request.getParameter("zlbm");
dlbm=request.getParameter("dlbm");
clbm=request.getParameter("clbm");
zyyx=request.getParameter("zyyx");
ypm=request.getParameter("ypm");
//------------------------------------------------------

//=================将查询条件参数通过Vector存到session中==========
slist.setZlbm (zlbm);
slist.setDlbm (dlbm);
slist.setClbm (clbm);
slist.setZyyx (zyyx);
slist.setYpm (ypm);
synchronized (session) {
session.setAttribute ("searchList",slist);
}
//---------------------------------------------------------
}
//--------------------------------------------------------
else
{
//============================取出查询条件参数====================
if(slist!=null){
zlbm=slist.getZlbm();
dlbm=slist.getDlbm();
clbm=slist.getClbm();
zyyx=slist.getZyyx();
ypm=slist.getYpm();
}
else{
if(stmt!=null) stmt.close();
stmt.setMaxRows(0);
connMgr.freeConnection("medicine",con);
response.sendRedirect("/medicine/session_error.html");
return;
}
//-------------------------------------------------
}
String sql2="select count(*) from medicines where del_flag=0";

//=====================根据条件参数设置SQL语句=======================

if(!(zlbm.trim().equals("0"))) {
sqlstatment+=(" and ( medicines.zlbm="+zlbm.trim()+" ) ");
sql2+=(" and zlbm="+zlbm.trim()+"");
}
if(!(dlbm.trim().equals("0"))) {
sqlstatment+=(" and ( medicines.dlbm="+dlbm.trim()+" )");
sql2+=(" and dlbm="+dlbm.trim()+"");
}
if(!(clbm.trim().equals("0"))) {
sqlstatment+=(" and ( medicines.clbm="+clbm.trim()+" ) ");
sql2+=(" and clbm="+clbm.trim()+"");
}
if(!(zyyx.trim().length ()==0)) {
sqlstatment+=(" and ( medicines.zyyx like %"+zyyx.trim()+"% ) ");
sql2+=(" and zyyx like %"+zyyx.trim()+"%");
}
if(!(ypm.trim().length ()==0)) {
sqlstatment+=(" and ( medicines.ypm like %"+ypm.trim()+"% ) ");
sql2+=(" and ypm like %"+ypm.trim()+"%");
}
sqlstatment+=" )) ORDER BY medicines.ypbm ASC ";
//-------------------------------------------------------------
Vector list = new Vector();
//================= 设置一页显示的数据条数(一次检索出的数据条数)===========
stmt.setMaxRows(25);
//----------------------------------------------------------------------
//===================执行查询将结果放到ResultSet中================
ResultSet rs = stmt.executeQuery(sqlstatment);
ResultSet rs2 = stmt.executeQuery(sql2);
//------------------------------------------------
if(rs==null){ //如果没有查询结果数据
if(stmt!=null) stmt.close();
stmt.setMaxRows(0);
connMgr.freeConnection("medicine",con);
response.sendRedirect("/medicine/no_medicine.html"); //定向到一个页面
return;
}
//====================将药品信息填入数据对象并存入Vector中================
if(rs2.next()){
all_count=rs2.getLong(1); //取得总条数
}
if(rs2!=null)rs2.close();
while(rs.next()){
medicinelist m = new medicinelist();
m.setYpbm(rs.getInt("ypbm"));
m.setZlmc(rs.getString("zlmc"));
m.setClmc(rs.getString("clmc"));
m.setDlmc(rs.getString("dlmc"));
m.setYpm(rs.getString("ypm"));
m.setZyyx(rs.getString("zyyx"));
m.setYpzy(rs.getString("ypzy"));
m.setClbm(clbm);
m.setDlbm(dlbm);
m.setZlbm(zlbm);
list.addElement(m);
}
//----------------------------------------------------------
if(rs!=null)rs.close();
stmt.setMaxRows(0);
if(stmt!=null)stmt.close();
connMgr.freeConnection("medicine",con);
//========================存入session中===========================
synchronized (session) {
session.setAttribute("medicinelist",list);
}
//-----------------------------------------------
}catch (SQLException e){
connMgr.freeConnection("medicine",con);
response.sendRedirect("/Medicine/sql_error.html");
return;}

//=======================重定向到一个JSP页面==========================
String url="/medicine/querymedicine.jsp?all_count="+all_count;
ServletContext sc = getServletContext();
RequestDispatcher rd = sc.getRequestDispatcher(url);
rd.forward(request, response);
//-------------------------------------------------------
}
public void destroy() {
// =================== 在Servlet退出时终止数据库连接,取消Statement对象
if(connMgr!=null) connMgr.release();
//------------------------------------------------------------------------
}
//========================处理HTTP Post 请求 ============================
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request,response);
}

//==========================取得 Servlet 信息 ============================
public String getServletInfo() {
return "medicine.querymedicine Information";
}
}
l querymedicine.jsp

<%@ page language="java" session="true" import="java.util.*,
Medicine.method, Medicine.medicinelist"cOntentType="text/html;charset=gbk" %>




<%
method md = new method();
Vector sklist;
synchronized (session) {
sklist = (Vector) session.getAttribute("medicinelist");
}
%>  
推荐阅读
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 禁止程序接收鼠标事件的工具_VNC Viewer for Mac(远程桌面工具)免费版
    VNCViewerforMac是一款运行在Mac平台上的远程桌面工具,vncviewermac版可以帮助您使用Mac的键盘和鼠标来控制远程计算机,操作简 ... [详细]
  • 本文详细介绍了在ASP.NET中获取插入记录的ID的几种方法,包括使用SCOPE_IDENTITY()和IDENT_CURRENT()函数,以及通过ExecuteReader方法执行SQL语句获取ID的步骤。同时,还提供了使用这些方法的示例代码和注意事项。对于需要获取表中最后一个插入操作所产生的ID或马上使用刚插入的新记录ID的开发者来说,本文提供了一些有用的技巧和建议。 ... [详细]
  • 阿里Treebased Deep Match(TDM) 学习笔记及技术发展回顾
    本文介绍了阿里Treebased Deep Match(TDM)的学习笔记,同时回顾了工业界技术发展的几代演进。从基于统计的启发式规则方法到基于内积模型的向量检索方法,再到引入复杂深度学习模型的下一代匹配技术。文章详细解释了基于统计的启发式规则方法和基于内积模型的向量检索方法的原理和应用,并介绍了TDM的背景和优势。最后,文章提到了向量距离和基于向量聚类的索引结构对于加速匹配效率的作用。本文对于理解TDM的学习过程和了解匹配技术的发展具有重要意义。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • Lodop中特殊符号打印设计和预览样式不同的问题解析
    本文主要解析了在Lodop中使用特殊符号打印设计和预览样式不同的问题。由于调用的本机ie引擎版本可能不同,导致在不同浏览器下样式解析不同。同时,未指定文字字体和样式设置也会导致打印设计和预览的差异。文章提出了通过指定具体字体和样式来解决问题的方法,并强调了以打印预览和虚拟打印机测试为准。 ... [详细]
  • Final关键字的含义及用法详解
    本文详细介绍了Java中final关键字的含义和用法。final关键字可以修饰非抽象类、非抽象类成员方法和变量。final类不能被继承,final类中的方法默认是final的。final方法不能被子类的方法覆盖,但可以被继承。final成员变量表示常量,只能被赋值一次,赋值后值不再改变。文章还讨论了final类和final方法的应用场景,以及使用final方法的两个原因:锁定方法防止修改和提高执行效率。 ... [详细]
  • 本文介绍了求解gcdexgcd斐蜀定理的迭代法和递归法,并解释了exgcd的概念和应用。exgcd是指对于不完全为0的非负整数a和b,gcd(a,b)表示a和b的最大公约数,必然存在整数对x和y,使得gcd(a,b)=ax+by。此外,本文还给出了相应的代码示例。 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • 电销机器人作为一种人工智能技术载体,可以帮助企业提升电销效率并节省人工成本。然而,电销机器人市场缺乏统一的市场准入标准,产品品质良莠不齐。创业者在代理或购买电销机器人时应注意谨防用录音冒充真人语音通话以及宣传技术与实际效果不符的情况。选择电销机器人时需要考察公司资质和产品品质,尤其要关注语音识别率。 ... [详细]
  • 如何去除Win7快捷方式的箭头
    本文介绍了如何去除Win7快捷方式的箭头的方法,通过生成一个透明的ico图标并将其命名为Empty.ico,将图标复制到windows目录下,并导入注册表,即可去除箭头。这样做可以改善默认快捷方式的外观,提升桌面整洁度。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
author-avatar
蓜甪紸甪1995
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有