仓酷云

标题: JAVA网页编程之JSP 2.0 + ORACLE 9i 下高效力分页的一... [打印本页]

作者: 若天明    时间: 2015-1-18 11:29
标题: JAVA网页编程之JSP 2.0 + ORACLE 9i 下高效力分页的一...
轮性能微软曾做过一个例子,就是同一个项目用java和.net来作,结果开发周期,.net是java的一半,性能java是.net的十分之一,代码量java是.net的三倍。呵呵,这说明了什么,.net的全方位比java好。但是有的人说.net不能跨平台,这个问题我和我同学曾讨论过,都认为微软的.net很可能早都可以跨平台了,但是微软为了保护他们的操作系统,所以才没有推出跨平台的.net,只是推出了跨语言的.net,js|oracle|分页packagecom.cwbnig;

importjava.sql.Connection;
importjava.sql.SQLException;
importjavax.sql.DataSource;
importjavax.naming.Context;
importjavax.naming.InitialContext;
importjavax.naming.NamingException;

publicclassDatabaseConn
{

publicDatabaseConn()
{
}

publicstaticsynchronizedConnectiongetConnection()throwsException
{
Connectionconn=null;
try
{
ContextinitCtx=newInitialContext();
ContextenvCtx=(Context)initCtx.lookup("java:comp/env");
DataSourceds=(DataSource)envCtx.lookup("jdbc/jspdev");
returnds.getConnection();
}
catch(SQLExceptione)
{
throwe;
}
catch(NamingExceptione)
{
throwe;
}
}
}




packagecom.cwbnig;

importjava.sql.*;
importjava.util.Vector;

publicclassOperateDB
{
privateConnectionconn=null;
privateStatementstmt=null;
PreparedStatementpstmt=null;
CallableStatementcstmt=null;
privateResultSetrs=null;
privateResultSetMetaDatarsmd=null;
privateStringstrsql="";

publicOperateDB()
{
try
{
conn=DatabaseConn.getConnection();
}
catch(Exceptione)
{
System.out.println("Error:com.cwbnig.OperateDB:StructureMethod");
}
}

publicConnectiongetConnection()throwsSQLException
{
returnthis.conn;
}

publicResultSetexecuteQuery(Stringsql)throwsSQLException
{
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
returnstmt.executeQuery(sql);
}

publicResultSetlistDataFromMSSQL(intcurpage,intpagesize,Stringtablename,Stringsid,Stringcon,Stringorder)throwsSQLException
{
intSELECTNUM=(curpage-1)*pagesize+1;
if(order.equalsIgnoreCase("asc"))
{
Stringmin="SELECTMAX("+sid+")ASidFROM(SELECTTOP"+SELECTNUM+""+sid+"FROM"+tablename+"ORDERBY"+sid+"ASC)tbl";

strsql="SELECTTOP"+pagesize+"*FROM"+tablename+"WHERE"+sid+">="+min+con+"ORDERBY"+sid+"ASC";
}
else
{
Stringmax="SELECTMIN("+sid+")ASidFROM(SELECTTOP"+SELECTNUM+""+sid+"FROM"+tablename+"ORDERBY"+sid+"DESC)tbl";

strsql="SELECTTOP"+pagesize+"*FROM"+tablename+"WHERE"+sid+"<="+max+con+"ORDERBY"+sid+"DESC";
}
returnthis.executeQuery(strsql);
}

publicResultSetlistDataFromMySQL(intcurpage,intpagesize,Stringtablename,Stringsid,Stringcon,Stringorder)throwsSQLException
{
intSELECTNUM=(curpage-1)*pagesize;
if(order.equalsIgnoreCase("asc"))
{
strsql="SELECT*FROM"+tablename+con+"ORDERBY"+sid+"ASCLIMIT"+SELECTNUM+","+pagesize;
}
else
{
strsql="SELECT*FROM"+tablename+con+"ORDERBY"+sid+"DESCLIMIT"+SELECTNUM+","+pagesize;
}
returnthis.executeQuery(strsql);
}

publicResultSetlistDataFromOracle(intcurpage,intpagesize,Stringtablename,Stringsid,Stringcon,Stringorder)throwsSQLException
{
intSELECTNUM=(curpage-1)*pagesize+2;
if(order.equalsIgnoreCase("asc"))
{
Stringmin="SELECTMAX("+sid+")ASSIDFROM(SELECT"+sid+"FROM"+tablename+"WHEREROWNUM<"+SELECTNUM+"ORDERBY"+sid+"ASC)TBL";
strsql="SELECT*FROM"+tablename+"WHERE"+sid+">=("+min+")ANDROWNUM<"+(pagesize+1)+con+"ORDERBY"+sid+"ASC";
}
else
{
Stringmax="SELECTMIN("+sid+")ASSIDFROM(SELECT"+sid+"FROM"+tablename+"WHEREROWNUM<"+SELECTNUM+"ORDERBY"+sid+"DESC)TBL";
strsql="(SELECT*FROM"+tablename+"WHERE"+sid+"<=("+max+")ORDERBY"+sid+"DESC)TBL2";
strsql="SELECT*FROM"+strsql+"WHEREROWNUM<"+(pagesize+1)+con;
}
returnthis.executeQuery(strsql);
}

publicVectorgetDataFromMSSQL(intcurpage,intpagesize,Stringtablename,Stringsid,Stringcon,Stringorder)throwsException
{
Vectorv=newVector();
rs=this.listDataFromMSSQL(curpage,pagesize,tablename,sid,con,order);
rsmd=rs.getMetaData();
intcolnum=rsmd.getColumnCount();
while(rs.next())
{
Object[]obj=newObject[colnum];
for(inti=0;i<colnum;i++)
{
obj[i]=newString(this.getCol(rs,rsmd.getColumnType(i+1),i+1));
}
v.add(obj);
}
stmt.close();
rs.close();
conn.close();
returnv;
}

publicVectorgetDataFromMySQL(intcurpage,intpagesize,Stringtablename,Stringsid,Stringcon,Stringorder)throwsException
{
Vectorv=newVector();
rs=this.listDataFromMySQL(curpage,pagesize,tablename,sid,con,order);
rsmd=rs.getMetaData();
intcolnum=rsmd.getColumnCount();
while(rs.next())
{
Object[]obj=newObject[colnum];
for(inti=0;i<colnum;i++)
{
obj[i]=newString(this.getCol(rs,rsmd.getColumnType(i+1),i+1));
}
v.add(obj);
}
stmt.close();
rs.close();
conn.close();
returnv;
}

publicVectorgetDataFromOracle(intcurpage,intpagesize,Stringtablename,Stringsid,Stringcon,Stringorder)throwsException
{
Vectorv=newVector();
rs=this.listDataFromOracle(curpage,pagesize,tablename,sid,con,order);
rsmd=rs.getMetaData();
intcolnum=rsmd.getColumnCount();
while(rs.next())
{
Object[]obj=newObject[colnum];
for(inti=0;i<colnum;i++)
{
obj[i]=newString(this.getCol(rs,rsmd.getColumnType(i+1),i+1));
}
v.add(obj);
}
stmt.close();
rs.close();
conn.close();
returnv;
}

publicStringgetCol(ResultSetrs,inttype,intcolNum)throwsException
{
Stringret="";
switch(type)
{
case(1):ret=rs.getString(colNum);break;
case(2):ret=rs.getString(colNum);break;
case(4):ret=String.valueOf(rs.getInt(colNum));break;
case(5):ret=String.valueOf(rs.getInt(colNum));break;
case(6):ret=String.valueOf(rs.getFloat(colNum));break;
case(8):ret=String.valueOf(rs.getDouble(colNum));break;
case(12):ret=rs.getString(colNum);break;
default:ret="notknow";
}
returnret;
}

publicObject[]getColName(Stringtablename)throwsException
{
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs=stmt.executeQuery("SELECT*FROM"+tablename+"WHEREROWNUM<2");
rsmd=rs.getMetaData();
intcolnum=rsmd.getColumnCount();
Object[]obj=newObject[colnum];
for(inti=0;i<colnum;i++)
{
obj[i]=rsmd.getColumnName(i+1);
}
returnobj;
}

publicintgetRowCount(Stringtablename)throwsSQLException
{
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
strsql="SELECTCOUNT(*)ASCOUNTFROM"+tablename;
rs=stmt.executeQuery(strsql);
if(rs.next())
{
returnrs.getInt(1);
}
else
{
return0;
}
}

publicintgetRowCount(ResultSetrs)throwsSQLException
{
introwCount=0;
rs.last();
rowCount=rs.getRow();
rs.beforeFirst();
returnrowCount;
}

publicintexecuteUpdate(Stringsql)throwsSQLException
{
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);

returnstmt.executeUpdate(sql);
}

publicint[]executeUpdateBatch(String[]sqls)throwsSQLException
{
conn.setAutoCommit(false);
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
try
{
for(inti=0;i<sqls.length;i++)
{
stmt.addBatch(sqls[i]);
}
int[]updateCounts=stmt.executeBatch();
conn.commit();
conn.setAutoCommit(true);
returnupdateCounts;
}
catch(SQLExceptione)
{
conn.rollback();
throwe;
}
}

publicPreparedStatementprepareStatement(Stringsql)throwsSQLException
{
pstmt=conn.prepareStatement(sql);
returnpstmt;
}

publicCallableStatementcallableStatement(Stringsql)throwsSQLException
{
cstmt=conn.prepareCall(sql);
returncstmt;
}

publicvoidsetAutoCommit(booleans)throwsSQLException
{
conn.setAutoCommit(s);
}

publicvoidcommit()throwsSQLException
{
conn.commit();
}

publicvoidrollback()throwsSQLException
{
conn.rollback();
}

publicvoidclose()throwsSQLException
{
if(stmt!=null)
{
stmt.close();
stmt=null;
}
if(conn!=null)
{
conn.close();
conn=null;
}
}
}



<%@pagecontentType="text/html;charset=gb2312"language="java"errorPage="errorinfo.jsp"%>
<html>
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
<title>testOracle</title>
</head>
<body>
<jsp:useBeanid="operatedb"scope="page"class="com.cwbnig.OperateDB"/>
<%
Object[]obj=null;
obj=operatedb.getColName("TBL_STRUCTS");
for(inttemp=0;temp<obj.length;temp++)
{
out.println(obj[temp]);
}

out.println("<br>");

java.util.Vectorv=operatedb.getDataFromOracle(1,10,"TBL_STRUCTS","SID","","desc");
java.util.Enumeratione=v.elements();
while(e.hasMoreElements())
{
obj=(Object[])e.nextElement();
for(inti=0;i<obj.length;i++)
{
out.println(obj[i]);
}
out.print("<br>");
}
%>
</table>
<br>
<ahref="testOracle.do?forward=bdgk">testOracle.do?forward=bdgk</a>
</body>
</html>


微软什么都提供了。你可以试想一下,如果你是新手,你是希望你点一下按钮程序就能运行那,还是想自己一点一点的组织结构,然后打包发部,调错再打包......
作者: 变相怪杰    时间: 2015-1-18 12:06
[url]http://www.ckuyun.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://www.ckuyun.com[/url]去下,安装上有什么问题,可以到论坛上去提问。
作者: 爱飞    时间: 2015-1-21 21:01
学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
作者: 只想知道    时间: 2015-1-30 22:18
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
作者: 第二个灵魂    时间: 2015-2-6 16:18
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
作者: 海妖    时间: 2015-2-17 04:00
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
作者: 若相依    时间: 2015-2-21 21:28
是一种使网页(Web Page)产生生动活泼画面的语言
作者: 谁可相欹    时间: 2015-2-27 12:42
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
作者: 因胸联盟    时间: 2015-3-9 04:02
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
作者: 莫相离    时间: 2015-3-19 05:15
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
作者: 仓酷云    时间: 2015-3-27 07:09
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。




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