JAVA网站制作之jsp中完成毗连池
轮性能微软曾做过一个例子,就是同一个项目用java和.net来作,结果开发周期,.net是java的一半,性能java是.net的十分之一,代码量java是.net的三倍。呵呵,这说明了什么,.net的全方位比java好。但是有的人说.net不能跨平台,这个问题我和我同学曾讨论过,都认为微软的.net很可能早都可以跨平台了,但是微软为了保护他们的操作系统,所以才没有推出跨平台的.net,只是推出了跨语言的.net,js在JSP里有两种完成的举措,一种是用JNDI(JavaNamingDirectoryInterface),这大概和使用服务器有关,假如是Resin,先在resin.conf里界说<resource-ref>
<res-ref-name>jdbc/oracle</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<init-paramdriver-name="oracle.jdbc.driver.OracleDriver"/>
<init-paramurl="jdbc:oracle:thin:@192.168.1.1:1521:oracle"/>
<init-paramuser="system"/>
<init-parampassword="manager"/>
<init-parammax-connections="20"/>
<init-parammax-idle-time="30"/>
</resource-ref>
假如为Tomcat,在Server.xml内里界说,有关的材料能够查文档,然后在jsp里如许用
try{
javax.naming.Contextenv=(Context)newInitialContext().lookup("java:comp/env");
javax.sql.DataSourcepool=(javax.sql.DataSource)env.lookup("jdbc/oracle");
}catch(Exceptione){System.err.println("Exceptionerror:"+e.getMessage());}
try{
Connectionconn=pool.getConnection();
}catch(Exceptione){System.out.println("Exceptionerror:"+e.getMessage());}
经由过程这段代码,你就取得从毗连池里取得了一个毗连conn。假如想用一般的毗连池,那只能用JavaBean了,先写一个ConnectionPool的java的类,然后间接从毗连池中取得毗连,上面是我一个毗连池的JavaBean
ConnectionPool.java以下:
importjava.io.PrintStream;
importjava.sql.Connection;
importjava.util.Vector;
//Referencedclassesofpackagecom.ilovejsp.sql:
//DataSource,PooledConnection
publicclassConnectionPool
{
privateVectorpool;
privateintsize;
DataSourcedb;
publicConnectionPool()
{
pool=null;
size=0;
db=newDataSource();
}
publicvoidsetSize(intvalue)
{
if(value>1)
size=value;
}
publicintgetSize()
{
returnsize;
}
publicsynchronizedvoidinitPool()
throwsException
{
try
{
for(intx=0;x<size;x++)
{
Connectionconn=db.getConnection();
if(conn!=null)
{
PooledConnectionpcon=newPooledConnection(conn);
addConnection(pcon);
}
}
}
catch(Exceptione)
{
System.err.println(e.getMessage());
}
}
privatevoidaddConnection(PooledConnectionpcon)
{
if(pool==null)
pool=newVector(size);
pool.addElement(pcon);
}
publicsynchronizedvoidreleaseConnection(Connectionconn)
{
intx=0;
do
{
if(x>=pool.size())
break;
PooledConnectionpcon=(PooledConnection)pool.elementAt(x);
if(pcon.getConnection()==conn)
{
System.err.println("ReleaseConnection".concat(String.valueOf(String.valueOf(x))));
pcon.setInUse(false);
break;
}
x++;
}
while(true);
}
publicsynchronizedConnectiongetConnection()
throwsException
{
PooledConnectionpcon=null;
for(intx=0;x<pool.size();x++)
{
pcon=(PooledConnection)pool.elementAt(x);
if(!pcon.inUse())
{
pcon.setInUse(true);
returnpcon.getConnection();
}
}
try
{
Connectionconn=db.getConnection();
pcon=newPooledConnection(conn);
pcon.setInUse(true);
pool.addElement(pcon);
}
catch(Exceptione)
{
System.err.println("Exceptionerror:".concat(String.valueOf(String.valueOf(e.getMessage()))));
}
returnpcon.getConnection();
}
publicsynchronizedvoidemptyPool()
{
for(intx=0;x<pool.size();x++)
{
System.err.println("ClosingJdbcConnection".concat(String.valueOf(String.valueOf(x))));
PooledConnectionpcon=(PooledConnection)pool.elementAt(x);
if(!pcon.inUse())
{
pcon.close();
continue;
}
try
{
Thread.sleep(3000L);
pcon.close();
}
catch(Exceptione)
{
System.out.println("Exception:".concat(String.valueOf(String.valueOf(e.getMessage()))));
}
}
db.close();
}
}
testpool.jsp内容以下:
<%@pagelanguage="java"contentType="text/html;charset=gb2312"%>
<%@pageimport="java.sql.*"%>
<HTML>
<HEAD>
<TITLE>体系数据信息</TITLE>
</HEAD>
<BODY>
<%ConnectionPooldb=newConnectionPool();
Connectionconn=db.getConnection();
Statementstmt=conn.createStatement();
Stringsql1="select*frompg_database";
ResultSetrs=stmt.executeQuery(sql1);
%>
<TABLE><TR><TD>体系数据库信息</TD></TR>
<TR><TD>
<%while(rs.next()){
%>
<%=rs.getString(1)%>
<%}
rs.close();%>
</TR></TD>
<TABLE><TR><TD>体系字段信息</TD></TR>
<TR><TD>
<%Stringsql2="select*frompg_type";
rs=stmt.executeQuery(sql2);
while(rs.next()){
%>
(<%=rs.getString(1)%>)
<%}
rs.close();
db.close();%>
</TR></TD>
</BODY>
</HTML>
轮性能微软曾做过一个例子,就是同一个项目用java和.net来作,结果开发周期,.net是java的一半,性能java是.net的十分之一,代码量java是.net的三倍。呵呵,这说明了什么,.net的全方位比java好。但是有的人说.net不能跨平台,这个问题我和我同学曾讨论过,都认为微软的.net很可能早都可以跨平台了,但是微软为了保护他们的操作系统,所以才没有推出跨平台的.net,只是推出了跨语言的.net, 你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢? Java是一种计算机编程语言,拥有跨平台、面向对java 是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能 是一种使网页(Web Page)产生生动活泼画面的语言 Java 编程语言的风格十分接近C、C++语言。 是一种语言,用以产生「小应用程序(Applet(s)) 当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢? 吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧 自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。 是一种突破用户端机器环境和CPU 至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。 Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。 当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢? 所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。 接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。 另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。 Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。 自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。 一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
页:
[1]