您好,欢迎访问一九零五行业门户网

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

下面将通过一些例程来说明实现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
medicine.method, medicine.medicinelistcontenttype=text/html;charset=gbk %>
marginheight=0 marginwidth=0 src=..medicinetitle.html>
商品列表
method md = new method();
vector sklist;
synchronized (session) {
sklist = (vector) session.getattribute(medicinelist);
}
%>
其它类似信息

推荐信息