简单生活 发表于 2015-1-18 11:34:29

JAVA教程之JSP用毗连池连数据库的成绩

其实产生见解的过程就是训练自己发现问题,分析问题的能力。根据以上的认识我想谈下传统的学习与通过视频独立学习的优缺点:js|数据|数据库|成绩列位妙手贫苦帮我看上面这三个文件(一个jsp,两个.java),我在IE输出地点时,提醒以下毛病(代码应当没有错,不知是否是设置的成绩),看妙手指教,不堪感谢:
D:ProgramFilesApacheGroupTomcat4.1workStandalonelocalhost\_shoppingindex_jsp.java:44:packagemybeandoesnotexist
mybean.DBConnManagerconnManager=null;
^



Anerroroccurredatline:2inthejspfile:/shopping/index.jsp

Generatedservleterror:
D:ProgramFilesApacheGroupTomcat4.1workStandalonelocalhost\_shoppingindex_jsp.java:46:packagemybeandoesnotexist
connManager=(mybean.DBConnManager)pageContext.getAttribute("connManager",PageContext.APPLICATION_SCOPE);
^



Anerroroccurredatline:2inthejspfile:/shopping/index.jsp

Generatedservleterror:
D:ProgramFilesApacheGroupTomcat4.1workStandalonelocalhost\_shoppingindex_jsp.java:49:packagemybeandoesnotexist
connManager=(mybean.DBConnManager)java.beans.Beans.instantiate(this.getClass().getClassLoader(),"mybean.DBConnManager");
^

//上面这两个是毗连池,上面两个文件都放在一个mybean的包里.
packagemybean;
importjava.sql.*;
importjava.util.*;
publicclassDBConnPool{
//正在利用毗连的数目
privateintusing;
//今朝可用的毗连数,即余暇毗连
privateVectorconnections=newVector();
//最年夜毗连数
privateintmaxconn;
//毗连池名
privateStringpoolname;
//数据库标识
privateStringdbid;
//驱动程序名
privateStringdrivername;
//数据库帐号
privateStringusername;
//数据库暗码
privateStringpasswd;
publicDBConnPool(Stringpoolname,Stringdbid,Stringdrivername,
Stringusername,Stringpasswd,intmaxconn){
this.poolname=poolname;
this.drivername=drivername;
this.dbid=dbid;
this.username=username;
this.passwd=passwd;
this.maxconn=maxconn;
}
/*将余暇毗连前往给毗连池*/
publicsynchronizedvoidreturnConnection(Connectionconn){
//将指定毗连加到向量开端
connections.addElement(conn);
//毗连用户减一
using--;
}
/*从毗连池失掉一个毗连*/
publicsynchronizedConnectiongetConnection(){
Connectionconn=null;//Connection是一个类,
//connections是一个向量,用于存储毗连对象,它所存储是的一切余暇形态的可用毗连
if(connections.size()>0){
//猎取毗连列表的第一个毗连
conn=(Connection)connections.elementAt(0);
connections.removeElementAt(0);//取得一个毗连,并将此毗连从行列中删除.
//假如此毗连已封闭,刚持续猎取,
try{
if(conn.isClosed())
conn=getConnection();
}
catch(Exceptione){
e.printStackTrace();
}
}
//假如实践利用的毗连数小于最年夜毗连数即有可用毗连),就新增添一个毗连
elseif(maxconn==0||using<maxconn){
//云云时无可用毗连(maxconn==0)且毗连数又未到达下限(using<maxconn)),就创立一个新毗连
conn=newConnection();
}
//假如毗连数已到达下限就前往空指针
if(conn!=null){
using++;
}
returnconn;
}
/*创立新的毗连*/
publicConnectionnewConnection(){
Connectionconn=null;
try{
//加载驱动
Class.forName(drivername);
conn=DriverManager.getConnection(dbid,username,passwd);
}catch(Exceptione){
e.printStackTrace();
returnnull;
}
returnconn;
}
/*封闭一切毗连*/
publicsynchronizedvoidcloseConn(){
EnumerationallConnections=connections.elements();
while(allConnections.hasMoreElements()){
Connectionconn=(Connection)allConnections.nextElement();
try{
conn.close();
}catch(SQLExceptione){
e.printStackTrace();
}
}
connections.removeAllElements();
}
}



packagemybean;
importjava.sql.*;
importjava.util.*;
publicclassDBConnManager{
//毗连池名列表
privateVectorpoolnames=newVector();
//驱动程序名列表
privateVectordrivernames=newVector();
//数据库标识列表
privateVectordbids=newVector();
//用户名列表
privateVectorusernames=newVector();
//用户暗码列表
privateVectorpasswds=newVector();
//最年夜毗连数列表
privateVectormaxconns=newVector();
//毗连池行列
privateHashtableconnPools=newHashtable();
publicDBConnManager(){
//增加Access数据库的毗连信息
poolnames.addElement("access");
drivernames.addElement("sun.jdbc.odbc.JdbcOdbcDriver");
dbids.addElement("jdbc:odbc:shopping");
usernames.addElement("");
passwds.addElement("");
maxconns.addElement("5");
//增加SQLServer2000数据库的毗连信息
poolnames.addElement("sqlserver2000");
drivernames.addElement("com.microsoft.jdbc.sqlserver.SQLServerDriver");
dbids.addElement("jdbc:microsoft:sqlserver://localhost:1433;DatabserName=shopping");
usernames.addElement("");
passwds.addElement("");
maxconns.addElement("5");
//毗连Mysql数据库信息
poolnames.addElement("mysql");
drivernames.addElement("org.gjt.mm.mysql.Driver");
dbids.addElement("jdbc:mysql://localhost/shopping");
usernames.addElement("");
passwds.addElement("");
maxconns.addElement("5");
//毗连Oracle8i/9i数据库
poolnames.addElement("oracle");
drivernames.addElement("oracle.jdbc.driver.OracleDriver");
dbids.addElement("jdbc:oracle:thin:@localhost:1521:shopping");
usernames.addElement("");
passwds.addElement("");
maxconns.addElement("5");

//创立毗连池
createPools();
}
/*将毗连前往给由指定的毗连池*/
publicvoidreturnConnection(Stringname,Connectionconn){
DBConnPoolpool=(DBConnPool)connPools.get(name);
if(pool!=null)
{
pool.returnConnection(conn);
}
}
/*失掉一个指定毗连池中的毗连*/
publicConnectiongetConnection(Stringname){
DBConnPoolpool=(DBConnPool)connPools.get(name);
if(pool!=null)
{
returnpool.getConnection();
}
returnnull;
}
/*封闭一切毗连*/
publicsynchronizedvoidcloseConns(){
EnumerationallPools=connPools.elements();
while(allPools.hasMoreElements()){
DBConnPoolpool=(DBConnPool)allPools.nextElement();
pool.closeConn();
}
}
/*创立毗连池*/
privatevoidcreatePools(){
for(inti=0;i<poolnames.size();i++)
{
Stringpoolname=poolnames.elementAt(i).toString();
Stringdrivername=drivernames.elementAt(i).toString();
Stringdbid=dbids.elementAt(i).toString();
Stringusername=usernames.elementAt(i).toString();
Stringpasswd=passwds.elementAt(i).toString();
intmaxconn=0;
try{
maxconn=Integer.parseInt(maxconns.elementAt(i).toString());
}catch(NumberFormatExceptione){
e.printStackTrace();
}
DBConnPoolpool=newDBConnPool(poolname,drivername,dbid,username,
passwd,maxconn);
connPools.put(poolname,pool);
}
}
}

上面这个是主页面.JSP文件
<%@pagecontentType="text/html;charset=GBK"%>
<%@pageimport="java.sql.*"%>
<jsp:useBeanid="connManager"scope="application"class="mybean.DBConnManager"/>
<html>
<head>
<title>
购物商城首页
</title>
</head>
<bodybgcolor="#B0C4DE">
<center><h1>接待会见本购物商城</h1></center>
<%
//ConnectionconnA=connManager.getConnection("access");
ConnectionconnS=connManager.getConnection("sqlserver2000");
if(connS==null)
{
%>
数据库正忙,请稍后再会见
<%
}
//StatementstmtA=connA.createStatement();
StatementstmtS=connS.createStatement();
%>
<%
Stringsql="select*fromuserinfo";
ResultSetrs=stmtS.executeQuery(sql);
while(rs.next())
{
%>
<tr>
<td><%=rs.getString("username")%></td>
<td><%=rs.getString("userpass")%></td>
</tr>
<%
}
rs.close();
stmtS.close();
connManager.returnConnection("sqlserver2000",connS);
%>
</body>
</html>



net程序员的大部门代码都靠控件拖拽完成的,虽然java也有,但是无论从美观和速度上都没发和.net比。java程序员都是代码完成的,所以java程序员常戏称.net程序员是操作员,呵呵。

小妖女 发表于 2015-1-18 22:20:37

你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。

飘飘悠悠 发表于 2015-1-23 20:07:16

关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。

精灵巫婆 发表于 2015-1-29 14:21:39

你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。

爱飞 发表于 2015-2-6 01:47:10

一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从

活着的死人 发表于 2015-2-14 21:13:01

是一种使用者不需花费很多时间学习的语言

若相依 发表于 2015-2-18 23:32:19

一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从

变相怪杰 发表于 2015-2-22 20:17:26

是一种为 Internet发展的计算机语言

分手快乐 发表于 2015-2-24 23:38:45

象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。

小魔女 发表于 2015-3-7 14:11:08

你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?

乐观 发表于 2015-3-12 22:09:29

Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站

若天明 发表于 2015-3-20 03:45:37

不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。

冷月葬花魂 发表于 2015-3-27 21:12:12

你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。

深爱那片海 发表于 2015-4-10 05:21:35

是一种突破用户端机器环境和CPU

再见西城 发表于 2015-4-12 10:34:17

http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。

山那边是海 发表于 2015-4-16 12:09:39

另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。

海妖 发表于 2015-4-18 23:46:16

Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。

第二个灵魂 发表于 2015-4-22 01:00:50

任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言

只想知道 发表于 2015-5-1 00:10:19

是一种语言,用以产生「小应用程序(Applet(s))

因胸联盟 发表于 2015-5-6 20:10:51

象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
页: [1]
查看完整版本: JAVA教程之JSP用毗连池连数据库的成绩