① 在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();
%>