仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2050|回复: 18
打印 上一主题 下一主题

[学习教程] JAVA网页编程之在JSP页面中完成检索数据的分页显现

[复制链接]
兰色精灵 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:40:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
因为能用到多少功能就用多少,不能用就不用!总的来说:要简单要性能好,可以不用框架。你说java复杂,就是因为你把java(j2ee)与这些框架混在了一起。js|分页|数据|显现|页面
在页面中,当检索的数据良多时,一般必要分页显现数据,并要完成翻页。
上面将经由过程一些例程来讲明完成JSP页面翻页手艺的完成。
起首,在JSP中,经由过程JAVAservlet来检索数据,而用JSP来挪用了局来显现。
因此,此手艺可分为两个部分(依附干系):
1.在服务器真个servlet中的完成
要点:
&将查询前提保留到session中,取session中的查询前提
&设置Statement对象的MaxRows(断定一页显现几行数据)
&按次地经由过程实行SQL语句查询数据,按maxRows来检索一个maxRows的数据,
下一页再检索下一maxRows的数据,以此类推。
2.在JSP中的显现完成
要点:
&显现maxRows条数据
&经由过程“下一页”按钮或超链再次挪用方才的servlet查询下一maxRows的数据
流程如图所示:
上面经由过程一个例程来讲明(一个servlet程序和一个JSP程序):
lquerymedicinejava(药querymedicine)
包裹药;
导进javax.servlet.*;
导进javax.servlet.http.*;
导进java.io.*;
导进java.util.*;
导进java.sql.*;
导进Medicine.medicinelist;
导进Medicine.searchData;
////////////////////////////////////////////////////
//接---mutiquery.jsp页面,并从request中失掉5条查询前提///
//按前提查询药品,并将了局存进session的“medicinelist”中。///
//张乾2000年3月15日///
////////////////////////////////////////////////////
大众的班querymedicine扩展HttpServlet{
公家的DBConnectionManagerconnMgr;
//初始化环球的变量
大众的空的init(ServletConfig设置)扔ServletException{
super.init(config);
connMgr=DBConnectionManager.getInstance();
}
//========================处置HTTPGet哀求============================
大众的空的doGet(HttpServletRequest哀求,HttpServletResponse反响)
扔ServletException,IOException{
报告stmt=null;
毗连否决=connMgr.getConnection("medicine");
假如(空的否决==){
response.sendRedirect("/medicine/con_error.html");
偿还;
}
//====================创立数据库Statement=============================
试一试{
stmt=con.createStatement();
}
捉住(破例e)
{
connMgr.freeConnection("medicine",con);
response.sendRedirect("/medicine/stmt_error.html");
偿还;
}
//-------------------------------------------------------------
longall_count=0;//存满意前提的药品总数
//===================从request中失掉session======================
试一试{
HttpSession集会=request.getSession(false);
假如(空的集会==){
connMgr.freeConnection("medicine",con);
response.sendRedirect("/medicine/session_error.html");
偿还;
}
//-----------------------------------------------------------
//======从“下一页”提交来的参数获得前页最初一条数据的药品编码=======
串ll_pos=request.getParameter("pos");
//假如pos=-1则暗示要重新入手下手查
//----------------------------------------------------------
//=====================查询用的SQL语句串==========================
绳sqlstatment="选择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)";
//-----------------------------------------------------
绳zlbm;
绳dlbm;
绳clbm;
绳zyyx;
绳ypm;
searchDataslist=新建searchData();
同步(集会){
slist=(searchData)session.getAttribute("searchList");
}
if(ll_pos.equals("-1")){
//===暗示不是由“下一页”过去要重新入手下手查数据==========
假如(slist!=null){
同步(集会){
session.removeAttribute("searchList");
}
}
slist=新建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);
同步(集会){
session.setAttribute("searchList",slist);
}
//---------------------------------------------------------
}
//--------------------------------------------------------
别的
{
//============================掏出查询前提参数====================
假如(slist!=null){
zlbm=slist.getZlbm();
dlbm=slist.getDlbm();
clbm=slist.getClbm();
zyyx=slist.getZyyx();
ypm=slist.getYpm();
}
别的{
假如(stmt!=null)stmt.close();
stmt.setMaxRows(0);
connMgr.freeConnection("medicine",con);
response.sendRedirect("/medicine/session_error.html");
偿还;
}
//-------------------------------------------------
}
绳sql2="选择数(*)来自药在哪儿del_flag=0";
//=====================依据前提参数设置SQL语句=======================
if(!(zlbm.trim().equals("0"))){
sqlstatment+=("而且(medicines.zlbm="+zlbm.trim()+")");
sql2+=("和zlbm="+zlbm.trim()+"");
}
if(!(dlbm.trim().equals("0"))){
sqlstatment+=("而且(medicines.dlbm="+dlbm.trim()+")");
sql2+=("和dlbm="+dlbm.trim()+"");
}
if(!(clbm.trim().equals("0"))){
sqlstatment+=("而且(medicines.clbm="+clbm.trim()+")");
sql2+=("和clbm="+clbm.trim()+"");
}
if(!(zyyx.trim().length()==0)){
sqlstatment+=("而且(象%"+zyyx.trim()+"%一样的medicines.zyyx)");
sql2+=(象%"+zyyx.trim()+"%");一样的"和zyyx
}
if(!(ypm.trim().length()==0)){
sqlstatment+=("而且(象%"+ypm.trim()+"%一样的medicines.ypm)");
sql2+=(象%"+ypm.trim()+"%");一样的"和ypm
}
sqlstatment+="))由medicines.ypbmASC";的命令
//-------------------------------------------------------------
矢量列表=新建矢量();
//=================设置一页显现的数据条数(一次检索出的数据条数)===========
stmt.setMaxRows(25);
//----------------------------------------------------------------------
//===================实行查询将了局放到ResultSet中================
ResultSetrs=stmt.executeQuery(sqlstatment);
ResultSetrs2=stmt.executeQuery(sql2);
//------------------------------------------------
if(rs==null){//假如没有查询了局数据
假如(stmt!=null)stmt.close();
stmt.setMaxRows(0);
connMgr.freeConnection("medicine",con);
response.sendRedirect("/medicine/no_medicine.html");//定向到一个页面
偿还;
}
//====================将药品信息填进数据对象并存进Vector中================
if(rs2.next()){
all_count=rs2.getLong(1);//获得总条数
}
if(rs2!=null)rs2.close();
while(rs.next()){
medicinelistm=新建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中===========================
同步(集会){
session.setAttribute("medicinelist",list);
}
//-----------------------------------------------
}捉住(SQLExceptione){
connMgr.freeConnection("medicine",con);
response.sendRedirect("/Medicine/sql_error.html");
偿还;}
//=======================重定向到一个JSP页面==========================
串url="/medicine/querymedicine.jsp?all_count="+all_count;
ServletContextsc=getServletContext();
RequestDispatcherrd=sc.getRequestDispatcher(url);
rd.forward(request,反响);
//-------------------------------------------------------
}
大众的空损坏(){
//===================在Servlet加入时停止数据库毗连,作废Statement对象
假如(connMgr!=null)connMgr.release();
//------------------------------------------------------------------------
}
//========================处置HTTPPost哀求============================
大众的空的doPost(HttpServletRequest哀求,HttpServletResponse反响)
扔ServletException,IOException{
doGet(哀求,反响);
}
//==========================获得Servlet信息============================
大众的绳getServletInfo(){
返来"medicine.querymedicine信息";
}
}
lquerymedicine.jsp
<%@页面言语=&quot;java&quot;session=&quot;实在的&quot;import="java.util.*,
Medicine.method,Medicine.medicinelist"contentType="text/html;charset=gbk"%>
<手迹言语=&quot;JavaScript&quot;>
功效下一条(){
varls_pos=document.form2.maxpos.value;
document.location="/servlet/Medicine.querymedicine?pos="+ls_pos;
}
功效具体(ypbm){
document.location="/servlet/Medicine.Detail?ypbm="+ypbm;
}
</script>
<!--增加头-->
<divalign="中央">
<bodytopmargin="0"leftmargin="10"rightmargin="10”bgcolor="#FFFFFF">
<divalign="中央">
<中央><IFRAME宽度=760高度=130NORESIZESCROLLING=否FRAMEBORDER=0
MARGINHEIGHT=0MARGINWIDTH=0SRC=&quot;..medicinetitle.html"></iframe>
</div>
<!--完成-->
<title>商品列表</title>
<%
办法md=新建办法();
矢量sklist;
同步(集会){
sklist=(矢量)session.getAttribute("medicinelist");
}
%>
<!-----------------------------显现表头-------------------------------->
<%
假如(sklist==空的或sklist.size()<=0)
{
response.sendRedirect("/medicine/no_medicine.html");
偿还;
}
别的
{%>
<center>您好!以下是商品的列表,共有<fontcolor=#ff0000>
<%=request.getParameter("all_count")%></font>条切合前提的药品信息
</center>
<divalign="中央">
<中央>
<桌子界限=&quot;1&quot;cellpadding=&quot;0&quot;cellspacing=&quot;0&quot;宽度=&quot;840&quot;
bordercolorlight="#FFFFFF"bordercolordark="#000000">
<trbgcolor="#339933">
<tdwidth=42align="center"><fontcolor="#339933"><b>明细</b></font></td>
<tdwidth=160align="center"><fontcolor="#FFFFFF"><b>商品称号</b></font></td>
<tdwidth=52align="center"><fontcolor="#FFFFFF"><b>超类</b></font></td>
<tdwidth=145align="center"><fontcolor="#FFFFFF"><b>年夜类</b></font></td>
<tdwidth=145align="center"><fontcolor="#FFFFFF"><b>子类</b></font></td>
<tdwidth=270align="center"><fontcolor="#FFFFFF"><b>形貌</b></font></td>
</tr>
<!------------------------------------------------------------------------------------------------------------------->
<%
medicinelistd=新建medicinelist();
合适于(int索引=0;索引<sklist.size();index++)
{
d=(medicinelist)sklist.elementAt(index);
绳lshref;
假如(d.getYpzy()==null或d.getYpzy().equals("http://")或d.getYpzy().equals(""))
{
lshref="";
}别的{
lshref=&quot;<一href="+d.getYpzy()+">";
}
out.println("<form定名=表格1method=postaction=/servlet/Medicine.Detail?ypbm="+d.getYpbm()+">");
out.println("<trbgcolor=#F3F3E9><tdalign=center><字体color=#000000巨细=2>
<inputtype=submitname=submit1value=明细></font></td><tdalign=center><fontcolor=#000000size=2>");
out.println(lshref+d.getYpm()+"</a></font></td><tdalign=center><字体color=#000000巨细=2>&quot;);
out.println(d.getClmc()+"</font></td><tdalign=center><字体color=#000000巨细=2>&quot;
+d.getDlmc()+"</font></td><tdalign=center><字体color=#000000巨细=2>&quot;);
out.println(d.getZlmc()+"</font></td><tdalign=center><字体color=#000000巨细=2>&quot;
+md.notNull(d.getZyyx())+"</font></td></tr></form>");
out.flush();
}
%>
<表格定名=表格2id=表格2>
<输出范例=hidden定名=maxposid=maxposvalue=<%=d.getYpbm()%>>
</表格>
<%
}
%>
</table>
<p></p>
<%
串ssll=request.getParameter("all_count");
长的长的temp=新建(ssll);
长cou=temp.longValue();
if(sklist.size()==25&&cou>25)
{%>
<inputtype=buttonvalue="下页">
<%}%>
<%
同步(集会){
if(session.getAttribute("medicinelist")!=null){
session.removeValue("medicinelist");
}
}
%>
</center>
<palign="center"><inputtype="button"value="前往"name="B3">
<br><br><br>
<!--增加底部-->
<divalign="中央">
<中央><IFRAME宽度=760高度=140NORESIZESCROLLING=否FRAMEBORDER=0
MARGINHEIGHT=0MARGINWIDTH=0SRC=&quot;..ottom.html"></iframe>
</div>
<!--完成-->



再说第三点:我并没有提到服务器也要整合,然后是IDE,一个好的IDE能够200%提高开发的速度,就说图形方面:你是经过简单托拽和点击就能实现功能好那。
小魔女 该用户已被删除
沙发
发表于 2015-1-21 12:30:13 | 只看该作者
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
活着的死人 该用户已被删除
板凳
发表于 2015-1-22 18:42:58 | 只看该作者
是一种突破用户端机器环境和CPU
地板
发表于 2015-1-28 11:40:25 | 只看该作者
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
小女巫 该用户已被删除
5#
发表于 2015-2-5 14:33:00 | 只看该作者
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
变相怪杰 该用户已被删除
6#
发表于 2015-2-12 04:34:06 | 只看该作者
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
蒙在股里 该用户已被删除
7#
发表于 2015-3-2 22:14:08 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
山那边是海 该用户已被删除
8#
发表于 2015-3-14 17:06:56 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
海妖 该用户已被删除
9#
发表于 2015-3-17 17:22:56 | 只看该作者
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
只想知道 该用户已被删除
10#
发表于 2015-3-17 21:10:33 | 只看该作者
科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
灵魂腐蚀 该用户已被删除
11#
发表于 2015-3-27 19:09:47 | 只看该作者
是一种使用者不需花费很多时间学习的语言
不帅 该用户已被删除
12#
发表于 2015-4-26 22:25:35 | 只看该作者
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
admin 该用户已被删除
13#
发表于 2015-5-2 18:38:59 | 只看该作者
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
爱飞 该用户已被删除
14#
发表于 2015-5-7 13:50:25 | 只看该作者
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
兰色精灵 该用户已被删除
15#
 楼主| 发表于 2015-6-8 19:58:04 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
第二个灵魂 该用户已被删除
16#
发表于 2015-6-11 21:06:12 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
若天明 该用户已被删除
17#
发表于 2015-6-12 09:09:16 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
莫相离 该用户已被删除
18#
发表于 2015-6-13 21:15:29 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
再见西城 该用户已被删除
19#
发表于 2015-7-11 04:31:30 | 只看该作者
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-4-25 16:38

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表