2.写一个JavaBeans放在WEB-INF\classes下,文件名为Conn.java,内容如下:import java.io.*;
import java.util.*;
import java.sql.*;
import javax.sql.*;
import javax.naming.*;public class Conn {
private Connection conn = null;
private Statement stmt = null;
private ResultSet rs = null;
private String dataSource = "java:comp/env/jdbc/NowindDB";
// 1.构造函数,在其中进行初始化
public Conn() {
try {
Context ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup(dataSource);
conn = ds.getConnection();
stmt = conn.createStatement();
} catch(Exception e) {
System.err.println(e.getMessage());
}
} // 2.执行查询
public ResultSet executeQuery(String sql) throws Exception {
return stmt.executeQuery(sql);
} // 3.执行更新
public int executeUpdate(String sql) throws Exception {
return stmt.executeUpdate(sql);
} // 4.关闭各连接
public void close() {
try {
if(rs!=null)
rs.close();
if(stmt!=null)
stmt.close();
if(conn!=null)
conn.close();
} catch(Exception e) {
System.err.println(e.getMessage());
}
}
}编译成功,生成Conn.class文件
import java.util.*;
import java.sql.*;
import javax.sql.*;
import javax.naming.*;public class Conn {
private Connection conn = null;
private Statement stmt = null;
private ResultSet rs = null;
private String dataSource = "java:comp/env/jdbc/NowindDB";
// 1.构造函数,在其中进行初始化
public Conn() {
try {
Context ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup(dataSource);
conn = ds.getConnection();
stmt = conn.createStatement();
} catch(Exception e) {
System.err.println(e.getMessage());
}
} // 2.执行查询
public ResultSet executeQuery(String sql) throws Exception {
return stmt.executeQuery(sql);
} // 3.执行更新
public int executeUpdate(String sql) throws Exception {
return stmt.executeUpdate(sql);
} // 4.关闭各连接
public void close() {
try {
if(rs!=null)
rs.close();
if(stmt!=null)
stmt.close();
if(conn!=null)
conn.close();
} catch(Exception e) {
System.err.println(e.getMessage());
}
}
}编译成功,生成Conn.class文件
解决方案 »
- aop用通知的时候就出现BeanCreationException异常
- 能不能加快lightbox中prototype.js的加载速度
- 为什么此修改表数据的方法不能够修改呢?请高手赐教
- 是否存在刷新页面而不刷新参数的方法?
- 请教 struts 提交表单后关闭窗口的问题
- 菜鸟初学JSP的简单问题,请指点!
- 超难问题,征高手们的经验之谈。分不够再加。!!!!
- 公司要建设一个mis,其实算是个OA,我以前没有做过?大家给点意见?
- 请问:怎么实现“提交不同类型文件”?
- 一处插入数据时发生的错误,请帮忙解决!
- 小弟初学,请教一个文件路径问题
- 用什么函数可以判断字符串s1中是否含有字符串s2??要不区分大小写的!!急!!!
<%@ page contentType="text/html;charset=GBK" %>
<%@ page import="java.sql.*" %>
<%@ page import="Conn" %><jsp:useBean id="db" scope="page" class="Conn" />
<table width=100% border=1 >
<%
String sql = "select * from records";
ResultSet rs=db.executeQuery(sql);
while(rs.next()) {
out.println("<tr><td>" + rs.getString(1) + "</td><td>" + rs.getString(2) + "</td></tr>");
}
%>
</table>
<%
rs.close();
db.close();
%>成功显示,并且多次刷新,也没有出现问题。
<name>maxActive</name>
<value>100</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>30</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>10000</value>
</parameter>上面的maxActive,maxIdle与maxWait分别是什么?
它们之间的联系是怎样的?
如果把它们设得很大,会不会对服务器或者数据库造成大的负担?
对于不同规模的网站,它们设为多大为合适?2。<Resource name="jdbc/NowindDB" auth="Container" type="javax.sql.DataSource" />
这句中的name为jdbc/NowindDB,name的值是否一定要为jdbc/*这样的形式?3。使用tomcat的数据源,是否能保证网站能承受较大的数据库操作请求?是否健壮?关于JavaBeans的问题1。private String dataSource = "java:comp/env/jdbc/NowindDB";
这一句中,数据源为什么是java:comp/env/jdbc/NowindDB?我设的数据源明明是jdbc/NowindDB呀?2。 private Connection conn = null;
private Statement stmt = null;
private ResultSet rs = null;
private String dataSource = "java:comp/env/jdbc/NowindDB";
这几个定义,可不可以把它们都定义为static?如果变成static,会有什么影响?3。这个JavaBean哪些地方设计得很不合理,需要改正?4。这个JavaBean还缺少哪些必要的功能?关于JSP网页的问题
1。<%
rs.close();
db.close();
%>
这里,rs执行close()后,db是否也必须调用close()?2。<jsp:useBean id="db" scope="page" class="Conn" />
这里这个Conn的对象db的作用范围是page,意味着访问者离开这个页面后,db就没有用了。如果我没有用db.close()关闭数据库连接,db失效后,db产生的连接会不会自动关闭?
这里这个Conn的对象db的作用范围是page,意味着访问者离开这个页面后,db就没有用了。如果我没有用db.close()关闭数据库连接,db失效后,db产生的连接会不会自动关闭?这里的page就是楼主说的那样了,你在这里声明的db就没有用了。
db.cloe()没有关闭的话在单用户操作时看不出来,如果多用户操作时,tomcat一会就死了。说明他不会自动关闭。我个人认为是不会关闭的。毕竟服务器不知道客户端的状态,他只有等待服务器使用淘汰算法时把连接释放。这当然是不可取的了。
这句中的name为jdbc/NowindDB,name的值是否一定要为jdbc/*这样的形式?这个name你想叫什么就叫什么~
你在后面用的时候就用这个名字,就好像初始化一个变量一样~
SPRRY
它们之间的联系是怎样的?
如果把它们设得很大,会不会对服务器或者数据库造成大的负担?
对于不同规模的网站,它们设为多大为合适?maxActive应该是最大连接数
maxIdle好像是持有的
maxWait是等待时间(如果连接满了,等多长时间,毫秒)
一般不要设很大,具体多大,就看实际用的情况(还有,你数据库端相应的连接数也得支持,要不然没用的)
这句中的name为jdbc/NowindDB,name的值是否一定要为jdbc/*这样的形式?
你的DataSource ds = (DataSource)ctx.lookup(dataSource);时用的值,你想写什么?随你不过这个java:comp/env好像是必须的3。使用tomcat的数据源,是否能保证网站能承受较大的数据库操作请求?是否健壮?
应该很健壮吧
我上个项目用的postgres+apach
大概能够并好100多个请求,每个请求插入10 - 100条数据不等
感谢高手eureka0891() 指点!But i need more!
我现在还没连通tomcat的连接池,
错误是
org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of
class '' for connect URL 'null'
还没解决!
只连通了resin的。
我连resin的做分页测试(初学),
if(intPageCount>0){
out.println((intPage-1) * intPageSize + 1);//我看到输出是每个分页的输出是正确的
rs.absolute((intPage-1) * intPageSize + 1);
i = 0;
while(i<intPageSize && rs.next()){ String names = rs.getString(1);
String use_xi = rs.getString(2);
%>
<li><%=names%> - <%=use_xi%>
<%
i++;
}
}
可是每个分页都显示的第一页的那些数据。
各位高手能顺便看看吗对于搂主的问题,上面几位的回答,我基本同意,可是对于tomcat的稳定性的看法,我认为
tomcat还是不太稳定,我用google搜了很多国外的贴子,他们普遍反映tomcat5。0以来配置发生很大变化,不太稳定。
另外楼主提到用static的问题我也想知道。
private Statement stmt = null;
private ResultSet rs = null;
private String dataSource = "java:comp/env/jdbc/NowindDB";
这几个定义,可不可以把它们都定义为static?如果变成static,会有什么影响?我认为还是不要用static,因为有同步的问题
应该再加一个返回conn的语句,今天就遇到了一个地方需要使用它。
我今天看见你的帖子很高兴,有一个问题一直困惑着我,我的jsp环境是jsdk1.4.2 + tomcat5.0 +mysql我现在在tomcat/webapps/下建了个虚拟目录myapp,jsp文件都是放在这里的即:tomcat/webapps/myapp我写了一个连接数据库的useban放在tomcat/webapps/WEB-INF/classes/mypak,其中mypak是包,也不知道是什么原因在jsp中调用总是不成功,我想请问一下你所说的设置server.xml是指把你给的代码放在server.xml的什么位置,另外我用的是虚拟目录也要在这里设置数据源吗?敬请各位大哥给予细解!
to ypl(追求) :javaBeans是不用在server.xml中设置的,直接在JSP中用jsp:useBean就可以了。不过,你是新建的tomcat/webapps/myapp目录,你需要在myapp/WEB-INF/下有一个web.xml文件,不然你的这个目录并不是一个真正的虚拟目录,所以你的类就找不到了。(你可以在启动tomcat的时候看一下提示信息,上面有没有显示myapp这个虚拟目录)或者在server.xml中显式地指出该目录是虚拟目录,如下:
<Context path="/myapp" docBase="实际地址" debug="0" reloadable="true"></Context>
把它放在</host>前。还有,我在server.xml里加数据源,是为了使用tomcat的连接池。你可以直接连接数据库而不加数据源,或者用第三方的连接池,就不需要在server.xml是加太多的东西了。
>>版主都在干吗?这些问题在tomcat的文档中大多有很详细的说明,而且这些问题在高手看来就是1+1的问题,为什么不自己在网上找找
如果解决不了,再来问呢?呵呵,学习要自己先找答案然后在问其它人