在页面中,当检索的数据很多时,通常需要分页显示数据,并要实现翻页。
下面将通过一些例程来说明实现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 (药 querymedicine )
包裹药;
导入 javax.servlet.*;
导入 javax.servlet.http.*;
导入 java.io.*;
导入 java.util.*;
导入 java.sql.*;
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/java/)导入 Medicine.medicinelist;
导入 Medicine.searchData;
////////////////////////////////////////////////////
// 接---mutiquery.jsp页面,并从request中得到5条查询条件 ///
// 按条件查询药品,并将结果存进session的“medicinelist”中。 ///
// 张乾 2000年3月15日 ///
////////////////////////////////////////////////////
公共的班 querymedicine 扩大 HttpServlet {
私人的 DBConnectionManager connMgr;
//初始化全球的变量
公共的空的 init ( ServletConfig 设置)扔 ServletException {
super.init(config);
connMgr = DBConnectionManager.getInstance();
}
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/java/)//========================处理 HTTP Get 请求============================
公共的空的 doGet ( HttpServletRequest请求 , HttpServletResponse反应)
扔 ServletException , IOException {
陈述 stmt=null;
连接反对= connMgr.getConnection("medicine");
如果(空的反对==){
response.sendRedirect("/medicine/con_error.html");
归还;
}
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/java/)// ==================== 创建数据库Statement =============================
试一试{
stmt=con.createStatement();
}
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/java/)抓住(例外 e )
{
connMgr.freeConnection("medicine",con);
response.sendRedirect("/medicine/stmt_error.html");
归还;
}
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/java/)//-------------------------------------------------------------
long all_count=0;//存满足条件的药品总数
//===================从request中得到session======================
试一试{
HttpSession会议= request.getSession(false);
如果(空的会议==){
connMgr.freeConnection("medicine",con);
response.sendRedirect("/medicine/session_error.html");
归还;
}
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/java/)//-----------------------------------------------------------
//======从“”提交来的参数取得前页最后一条数据的药品编码=======
串 ll_pos=request.getParameter("pos");
//如果pos=-1则表示要从头开始查
//----------------------------------------------------------
//=====================查询用的SQL语句串==========================
绳sqlstatment=& quot ;选择 medicines.ypbm, medsmalltypes.zlmc, medsupertypes.clmc,
medtypes.dlmc, medicines.ypm, medicines.zyyx, medicines.ypzy来自药,
medsmalltypes , medsupertypes , medtypes在哪儿 medicines.ypbm"+ll_pos+"
并且(( medsmalltypes.zlbm = medicines.zlbm )并且( medsupertypes.clbm = medicines.clbm )
并且( medtypes.dlbm = medicines.dlbm )并且(( medicines.del_flag =0)& quot ;;
//-----------------------------------------------------
绳 zlbm;
绳 dlbm;
绳 clbm;
绳 zyyx;
绳 ypm;
searchData slist=新建 searchData ();
同步(会议){
slist=(searchData)session.getAttribute("searchList");
}
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/java/)if(ll_pos.equals("-1")){
//===表示不是由“”过来要从头开始查数据==========
如果( slist ! =null ){
同步(会议){
session.removeAttribute("searchList");
}
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/java/)}
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/java/)slist=新建 searchData ();
//=============从设置查询