仓酷云

标题: JAVA网站制作之《完成JSP分页显现数据库》的浏览条记 [打印本页]

作者: 老尸    时间: 2015-1-18 11:31
标题: JAVA网站制作之《完成JSP分页显现数据库》的浏览条记
那这个对象有什么意义?现在很多用javabean的人就不能保证对象有完整的意义,不成熟的使用模式等导致代码疯狂增长,调试维护的时间要得多得多。在说性能之前,先说说你这个比较的来历。据说微软为了证明。net比java好。js|条记|分页|数据|数据库|显现这篇文章先容的是用javabean和jsp页面来完成数据的分页显现,例子中所利用的数据库是Mysql。

1、先看javabean

类名:

databaseBean.java:

以下为databaseBean.java的代码:

packagedatabase_basic;
importjava.sql.*;
importjava.util.*;

publicclassdatabaseBean
{
//这是默许的数据库毗连体例
privateStringDBLocation="jdbc:mysql://localhost/onestoptech?user=root&password=password&useUnicode=true&characterEncoding=GB2312";
privateStringDBDriver="org.gjt.mm.mysql.Driver";
privateConnectionconn=null;
publicdatabaseBean(){}

//经由过程set办法能够天真设置数据库的毗连
publicvoidsetDBLocation(Stringlocation){DBLocation=location;}
publicvoidsetDBDriver(Stringdriver){DBDriver=driver;}
publicvoidsetconn(Connectionconn){this.conn=conn;}

publicStringgetDBLocation(){return(DBLocation);}
publicStringgetDBDriver(){return(DBDriver);}
publicConnectiongetconn(){return(conn);}

/*publicStringDBConnect(){}
publicStringDBDisconnect(){}
publicResultSetquery(Stringsql){}
publicintgetTotalPage(Stringsql,intpageSize){}
publicResultSetgetPagedRs(Stringsql,intpageSize,intpageNumber){}
publicStringexecute_sql(Stringsql){}*/

//创建毗连
publicStringDBConnect()
{
StringstrExc="Success!";//strExc默许为Success,假如有破例抛出,即数据库毗连不乐成,则上面几个catch中被付与其他抛出信息
try
{
Class.forName(DBDriver);
conn=DriverManager.getConnection(DBLocation);
}
catch(ClassNotFoundExceptione)
{
strExc="数据库驱动没有找到,毛病提醒:<br>"+e.toString();
}
catch(SQLExceptione)
{

strExc="sql语句毛病,毛病提醒<br>"+e.toString();
}
catch(Exceptione)
{
strExc="毛病提醒:<br>"+e.toString();
}

return(strExc);
}//thenendofDBConnect

//断开毗连
publicStringDBDisconnect()
{
StringstrExc="Success!";//strExc默许为Success,假如有破例抛出,即数据库断开毗连不乐成,则上面几个catch中被付与其他抛出信息

try
{
if(conn!=null)conn.close();
}
catch(SQLExceptione)
{
strExc=e.toString();
}
return(strExc);

}



//经由过程传进sql语句来前往一个了局集
publicResultSetquery(Stringsql)throwsSQLException,Exception
{
ResultSetrs=null;
if(conn==null)
{
DBConnect();
}

if(conn==null)
{
rs=null;
}
else
{
try
{
Statements=conn.createStatement();
rs=s.executeQuery(sql);
}
catch(SQLExceptione){thrownewSQLException("Coundnotexecutequery.");}
catch(Exceptione){thrownewException("Coundnotexecutequery.");}
}//thenendofif
return(rs);
}//thenendofthefunctionexecuteQuery

//经由过程传进sql语句和pageSize(每页所显现的了局数量)盘算并前往统共的页数
publicintgetTotalPage(Stringsql,intpageSize)
{
ResultSetrs=null;
inttotalRows=0;
if(conn==null)
{
DBConnect();
}

if(conn==null)
{
rs=null;
}
else
try
{
Statements=conn.createStatement();

rs=s.executeQuery(sql);//经由过程传进的sql失掉了局集

while(rs.next())
totalRows++;//让rs一个个数,数完一遍,经由过程totalRows++也就盘算出了前往了局会合总的条目数
}
catch(SQLExceptione){}

rs=null;
//由这个算法得出总页数(totalRows-1)/pageSize+1,并前往了局。totalRows是指前往了局会合的总的条目数,pageSize是指每页显现的条目数
return((totalRows-1)/pageSize+1);
}


//经由过程传进sql语句,每页显现的条目数(pageSize)和页码,失掉一个了局集
publicResultSetgetPagedRs(Stringsql,intpageSize,intpageNumber)
{
ResultSetrs=null;
intabsoluteLocation;
if(conn==null)
{
DBConnect();
}

if(conn==null)
{
rs=null;
}
else
try
{
Statements=conn.createStatement();

//pageSize*pageNumber每页显现的条目数乘以页码,盘算出最初一行了局的编号,任何编号年夜于这个maxrows的了局城市被drop
s.setMaxRows(pageSize*pageNumber);

rs=s.executeQuery(sql);
}
catch(SQLExceptione){}

//absoluteLocation=pageSize*(pageNumber-1)这个表达式盘算出上一页最初一个了局的编号(假如有本页的话,上一页的显现的了局条目数一定是pageSize)
absoluteLocation=pageSize*(pageNumber-1);


try
{

//这个for轮回的感化是让了局集rs定位到本页之前的最初一个了局处
for(inti=0;i<absoluteLocation;i++)
{
rs.next();
}
}
catch(SQLExceptione){}
//此时前往的了局集被两端一夹,就是该页(pageNumber)要显现的了局
return(rs);

}


publicStringexecute_sql(Stringsql){
StringstrExc;
strExc="Success!";

if(conn!=null)
{
try{
PreparedStatementupdate;
update=conn.prepareStatement(sql);
update.execute();
}
catch(SQLExceptione)
{
strExc=e.toString();
}
catch(Exceptione)
{
strExc=e.toString();
}
}
else
{
strExc="ConnectionLost!";
}
return(strExc);

}//execute_sql


2、剖析jsp页面

页面称号:

admin_show.jsp

页面代码:

<%@pageerrorPage="error.jsp"%>
<%@pagecontentType="text/html;charset=gb2312"%>
<%@pageimport="java.util.*"%>
<%@pageimport="java.sql.*"%>
//导进database_basic包上面的databaseBean类,别号是basicDB
<jsp:useBeanid="basicDB"class="database_basic.databaseBean"scope="page"/>
<%
Stringsql;
ResultSetrs;
intid;
Stringreply,Exc;
Exc=basicDB.DBConnect();//创建毗连,若乐成,则前往Success!若失利,则前往响应堕落信息

if(!Exc.equals("Success!"))
{
//basicDB.DBDisconnect();
thrownewException(Exc);
}

intpageSize=10;//界说每页显现的数据条数
intcurrentPage=1;//以后页(第一次显现的一定是第一页啦!~),今后的“以后页”由上面呈现的页面中的pages参数传进
intallPage=-1;
Stringpages=request.getParameter("pages");//获得页面中pages参数,此参数代表的页面的就是要显现的“以后页面”

if(pages!=null)currentPage=Integer.valueOf(pages).intValue();//这是一个Integer型转int型的例子,第一次实行这个页面的时分,pages这个参数是null,currentPage=1;当再次实行这个页面的时分,参数pages将被赋值,currentPage=pages的int值

sql="select*fromgbookorderbyiddesc";//如许前往的了局会议接纳desc降序分列,优点是,显现在后面的是最新的信息

allPage=basicDB.getTotalPage(sql,pageSize);//失掉总页码数

rs=basicDB.getPagedRs(sql,pageSize,currentPage);//失掉以后页面要显现的了局集

%>

<tableborder="0"cellspacing="1"cellpadding="3"width="590"bgcolor="#ffffff">
<%
while(rs.next()){
id=rs.getInt("id");//失掉数据库(了局集)中id编号
%>
<trbgcolor="#FF6600"style="color:white">
<td>Name:<%=rs.getString("leaver")%></td>
<td>Time:<%=rs.getString("leave_date")%></td>
<td>Email:<%=rs.getString("email")%></td>
<td><divstyle="width:150;overflow:hidden;">Home:<%=rs.getString("homepage")%></div></td>
</tr>
<trbgcolor="#FFE3B9">
<tdcolspan=4><FONTCOLOR="#FF6600">Content:</FONT><BR><BR><%=rs.getString("content")%></td>
</tr>
<%}%>

<tr><tdheight="1"></td></tr>
<tr>
<tdcolspan=4align=rightbgcolor="#FF6600"style="color:white;">
如今是第<%=currentPage%>页,
<%if(currentPage>1){%>
<!--假如不在第一页,则显现出“首页”链接-->
<AHREF="admin_show.jsp?pages=<%=(currentPage-1)%>">首页</A>
<%}
for(inti=1;i<=allPage;i++)
{
//显现出1、2、3、4……到最初一页的链接
out.println("<ahref=admin_show.jsp?pages="+i+">"+i+"</a>");

}

%>
<%if(currentPage<allPage){%>
<!--假如不在最初一页,则显现出“末页”链接-->
<AHREF="admin_show.jsp?pages=<%=(currentPage+1)%>">末页</A>
<%}%></td>
</tr>
</table>

}//thenendoftheclass


3、总结
这个完成分页显现的程序中,有几个算法和完成办法是对照流动且典范的,对没写太过页程序的人来讲,应当有所启示。



************************************************************************************************************************
天职析呈报由王智伟完成
原文《完成JSP分页显现数据库(mysql)》请见:潇湘网论坛论坛->web编程--JSP->完成JSP分页显现数据库(mysql)FredHuang
*************************************************************************************************************************



Java编译的是字节码,跟C++相反,启动不够快,效率不够高,难以精确控制内存,但是优点是编程比C++容易,代码比较安全但是容易留下性能隐患,跨平台靠字节码在各个平台复制(一处编译到处调试)
作者: 第二个灵魂    时间: 2015-1-21 09:22
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
作者: 金色的骷髅    时间: 2015-1-25 23:16
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
作者: admin    时间: 2015-1-31 19:02
是一种使用者不需花费很多时间学习的语言
作者: 若天明    时间: 2015-2-7 13:40
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
作者: 柔情似水    时间: 2015-2-22 02:49
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
作者: 再见西城    时间: 2015-3-6 22:37
多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
作者: 只想知道    时间: 2015-3-11 05:52
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
作者: 飘灵儿    时间: 2015-3-11 18:10
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
作者: 小女巫    时间: 2015-3-19 06:12
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
作者: 灵魂腐蚀    时间: 2015-3-19 10:20
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
作者: 再现理想    时间: 2015-3-25 02:37
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
作者: 小妖女    时间: 2015-3-31 03:24
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
作者: 因胸联盟    时间: 2015-3-31 04:33
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
作者: 山那边是海    时间: 2015-4-1 09:22
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
作者: 分手快乐    时间: 2015-4-6 01:05
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
作者: 爱飞    时间: 2015-4-12 23:51
Java 编程语言的风格十分接近C、C++语言。
作者: 深爱那片海    时间: 2015-4-14 12:50
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
作者: 老尸    时间: 2015-4-19 16:22
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
作者: 蒙在股里    时间: 2015-4-26 05:10
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2