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

下面将通过一些例程来说明实现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" %> 
<script language="javascript"> 
function next(){ 
var ls_pos=document.form2.maxpos.value; 
document.location="/servlet/Medicine.querymedicine?pos="+ls_pos; 

function detail(ypbm){ 
document.location="/servlet/Medicine.Detail?ypbm="+ypbm; 

 
<!--add head--> 
<div align="center"> 
<body topmargin="0" leftmargin="10" rightmargin="10” bgcolor="#FFFFFF"> 
<div align="center"> 
<center><IFRAME WIDTH=760 height=130 NORESIZE SCROLLING=no FRAMEBORDER=0 
MARGINHEIGHT=0 MARGINWIDTH=0 SRC="..medicinetitle.html"></iframe> 
</div> 
<!--finish--> 
<title>商品列表</title> 
<% 
method md = new method(); 
Vector sklist; 
synchronized (session) { 
sklist = (Vector) session.getAttribute("medicinelist"

%> 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值