① 在jsp中使用连接池的原理,工作方式相关实例
连接池最基本的思想就是预先建立一些连接放置于内存对象中以备使用,当程序中需要建立数据库连接时,只须从内存中取一个来用而不用新建。同样,使用完毕后,只需放回内存即可。而连接的建立、断开都有连接池自身来管理。同时,我们还可以通过设置连接池的参数来控制连接池中的连接数、每个连接的最大使用次数等等。通过使用连接池,将大大提高程序效率,同时,我们可以通过其自身的管理机制来监视数据库连接的数量、使用情况等。
② jsp数据库连接池
NullPointerException 导致的
以上内容未见任何与数据连接有关的内容
建议分开调试一下 注意对异常的捕捉和处理
③ jsp数据库连接
//导入JDBC相关类
import java.sql.*;
//导入MySQL的JDBC相关类
import org.gjt.mm.mysql.*;
public class MysqlExample{
Connection conn=null;//定义数据库连接对象
Statement st=null;//定义数据库执行象
//定义连接数据库的方法
public void connectToMySQL(){
try{
Class.forName("org.gjt.mm.mysql.Driver");
/*加载JDBC驱动程序,如果找不到会出错,如果频繁的对数据库进行操作,可以把
加载的内容写在类开头的static块里,因为驱动只要加载一次就够了,没有必要在每次建立连接时加载驱动.
*/
/*
如果查找成功就尝试连接数据库,DriverManager的getConnection的方法有3个参数:
1.数据库的URL,MySQL为jdbc:mysql://hostname.port/databasename
2.数据库用户名
3.数据库密码
以下的参数只是举例而已
*/
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/person","root","");
//如果要用到事务,必须如下设置
/*
conn.setAutoCommit(false);
*/
System.out.println("OK");//只是便于自己查看是否连接成功了
}catch(Exception e){//捕获错误
System.out.println(e.getMessage());
}
}
到此为止是完成了用connectToMySQL方法封装了对数据库的连接,当然你还可以对add,remove,query等方法对数据库里操作进行封装,最后就是一个定义一个方法connectClose(),调用close(),将st和conn关闭,当然在关闭conn之前记得conn.commit();
④ tomcat 7,mysql,intelliJ IDEA,jsp ....实现数据库连接池的问题
把<h1><%= c%></h1>换成下面的试试:
<h1><c:out value="<%= c%>" /></h1>
⑤ jsp连接池连接sql server是怎么实现的
1.将数据库驱动程序的JAR文件放在Tomcat的 common/lib 中;
2.在server.xml中设置数据源,以MySQL数据库为例,如下:
在<GlobalNamingResources> </GlobalNamingResources>节点中加入,
<Resource
name="jdbc/DBPool"
type="javax.sql.DataSource"
password="root"
driverClassName="com.mysql.jdbc.Driver"
maxIdle="2"
maxWait="5000"
username="root"
url="jdbc:mysql://127.0.0.1:3306/test"
maxActive="4"/>
属性说明:name,数据源名称,通常取”jdbc/XXX”的格式;
type,”javax.sql.DataSource”;
password,数据库用户密码;
driveClassName,数据库驱动;
maxIdle,最大空闲数,数据库连接的最大空闲时间。超过空闲时间,数据库连
接将被标记为不可用,然后被释放。设为0表示无限制。
MaxActive,连接池的最大数据库连接数。设为0表示无限制。
maxWait ,最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示
无限制。
3.在你的web应用程序的web.xml中设置数据源参考,如下:
在<web-app></web-app>节点中加入,
<resource-ref>
<description>MySQL DB Connection Pool</description>
<res-ref-name>jdbc/DBPool</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
子节点说明: description,描述信息;
res-ref-name,参考数据源名字,同上一步的属性name;
res-type,资源类型,”javax.sql.DataSource”;
res-auth,”Container”;
res-sharing-scope,”Shareable”;
4.在web应用程序的context.xml中设置数据源链接,如下:
在<Context></Context>节点中加入,
<ResourceLink
name="jdbc/DBPool"
type="javax.sql.DataSource"
global="jdbc/DBPool"/>
属性说明:name,同第2步和第3步的属性name值,和子节点res-ref-name值;
type,同样取”javax.sql.DataSource”;
global,同name值。
至此,设置完成,下面是如何使用数据库连接池。
1.建立一个连接池类,DBPool.java,用来创建连接池,代码如下:
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
public class DBPool {
private static DataSource pool;
static {
Context env = null;
try {
env = (Context) new InitialContext().lookup("java:comp/env");
pool = (DataSource)env.lookup("jdbc/DBPool");
if(pool==null)
System.err.println("'DBPool' is an unknown DataSource");
} catch(NamingException ne) {
ne.printStackTrace();
}
}
public static DataSource getPool() {
return pool;
}
}
2.在要用到数据库操作的类或jsp页面中,用DBPool.getPool().getConnection(),获得一个Connection对象,就可以进行数据库操作,最后别忘了对Connection对象调用close()方法,注意:这里不会关闭这个Connection,而是将这个Connection放回数据库连接池。
⑥ jsp中如何使用数据库连接池
可以在 服务器里配置
tomcat 啥的
或者 自己写
一个连接池的类, 一个监听, 一个连接类
连接池最大连接20个
初始化时,连接5个
每新建一个 连接对象 时,都是在连接池里取的
如果没有空闲连接,就建立一个连接.如果超过最大连接,就等待
监听 查看当前连接池里的连接, 把被调用过的连接再设置为空闲连接
⑦ JSP MYSQL 连接池的配置,高手来QQ185259693在线等
Jboss数据库连接池
wwx 为数据库名
UserInfor为表名
数据库用户名和密码分别为:root root
参考 http://www.matrix.org.cn/translation/Wiki.jsp?page=J2EEEJB_JbossJDBC
(该blog 包括几个主要数据库的连接)
MySQL是一个开放源代码的数据库,有很多开源项目和小型的社团都在使用它。
一 把mysql-connector-java-3.1.11-bin.jar复制到/server/default/lib目录下,
(需要mysql-connector-java-3.0.16-ga.zip包 将里面的jar文件取出)
二 再把/docs/examples/jca/mysql-ds.xml复制到/server/default/deploy目录下。修改mysql-ds.xml文件,设置为 com.mysql.jdbc.Driver再把设置为jdbc:mysql:///,其中是数据库主机名是数据库名。
例:<datasources>
<local-tx-datasource>
<jndi-name>MySqlDS</jndi-name>
<connection-url>jdbc:mysql://localhost:3306/wwx</connection-url>//wwx
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>root</user-name>
<password>root</password>
</local-tx-datasource>
</datasources>
注意:如果localhost不行 就用127.0.0.1 这个一定没问题!
还有就是如果数据库没有密码!那么就这样<password></password>
三 然后需要设置standardjaws.xml (或 jaws.xml 注: \server\default\conf目录下)文件的和元素:
<jaws>
<datasource>java:/MySqlDS</datasource>
<type-mapping>mySql</type-mapping>
。。。。。。。
</jaws>
四 同样也需要把standardjbosscmp-jdbc.xml (或 jbosscmp-jdbc.xml文件 注: \server\default\conf目录下)的 和 元素设置为下面这样:
<jbosscmp-jdbc>
<defaults>
<datasource>java:/MySqlDS</datasource>
<datasource-mapping>mySql</datasource-mapping>
</defaults> </jbosscmp-jdbc>
说明:<datasource-mapping>mySql</datasource-mapping>在我的Jboss里面是被注释掉的,但我把拿回来! 就是把 <----和------ 都删掉!
五 最后再修改login-config.xml(\server\default\conf目录下)文件来使用MySQL:
<application-policy name = "MySqlDbRealm">
<authentication>
<login-mole code = "org.jboss.resource.security.ConfiguredIdentityLoginMole" flag = "required">
<mole-option name ="principal">wwx</mole-option>
<mole-option name ="userName">root</mole-option>
<mole-option name ="password">root</mole-option>
<mole-option name="managedConnectionFactoryName"> jboss.jca:service=LocalTxCM,name=MySqlDS
</mole-option>
</login-mole>
</authentication>
</application-policy>
说明:这段代码就直接 到login-config.xml里面就ok!不知道往哪放吗?
嘿嘿,就放在<policy> 下面吧!
还有就是如果数据库没有密码!那么就这样<mole-option name ="password"></mole-option>
六 修改了mysql-ds.xml, standardjaws.xml, standardjbosscmp-jdbc.xml,和 login-config.xml 文件就可以在Jboss上使用MySQL了。
七 调试代码
在jboss-4.0.2/server/default/deploy下 建个文件夹 : test.war
里面test.jsp, 代码如下!
<%@pageimport="javax.naming.*"%>
<%@pageimport="javax.sql.*"%>
<%@pageimport="java.sql.*"%>
<%
try {
Context ctx = new InitialContext(); //得到初始化上下文
Object obj = ctx.lookup("java:/MySqlDS");//查找连接池
DataSource ds = (DataSource) obj;//转换成DataSource
Connection connect = ds.getConnection();//从连接池中得到一个连接
Statement stmt = connect.createStatement();
ResultSet rs = stmt.executeQuery("select * from num");//这是你的数据库的表噢!
while(rs.next()){
out.println(rs.getObject("NO"));//取出一个字段
}
} catch (NamingException e) {
e.printStackTrace();
} catch(SQLException e1){
e1.printStackTrace();
}
out.flush();
out.close();
%>