JSP操作MySQL資料庫執行個體講解

來源:互聯網
上載者:User

 JSP操作MySQL資料庫執行個體講解

一:概述

        在開始介紹之前先談談為什麼要寫這片文章,個人認為作為一個營運工程師,我們要熟悉的知識網路,不僅僅要限於點知識的掌握,比如linux系統,web伺服器的搭建,資料庫等等,還要熟悉這些點組成的網路,確切的說,點之間的是怎麼相互影響的,點與點之間怎麼相互操作等等,比如在某個點出現問題時,我們可以系統的分析,最終尋找到問題的根源。那麼在web前端的JSP程式或者PHP,ASP等)是怎麼通過中間的程式與背景資料庫建立起一條線這裡我們暫且將JSP,tomcat,mysql稱為一條所謂的線),怎麼通訊,怎麼相互影響,這裡涉及的內容太多了,限於個人水平有恨,僅介紹一下JSP怎麼通過tomcat,串連背景mysql資料庫。

二:拓撲圖

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131229/1Z6255034-0.png" border="0" alt="" />

實驗環境:Centos5.8(kernel 2.6.18)+tomcat5.5+mysql5.0 

三:JSP串連MySQL

   註:伺服器的搭建不是本文的重點

  這裡先介紹一下前端的JSP頁面和Tomcat串連的相關知識點,這裡談談個人的理解,首先JSP程式和tomcat通訊要通過tomcat提供的串連池,tomcat可以在串連池中設定最大數量的串連,提供給JSP程式串連,串連池中的串連可以動態釋放與回收。但是串連池中提供的串連數要小於Mysql串連池的數量。

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131229/1Z6256324-1.png" border="0" alt="" />

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131229/1Z6253959-2.png" border="0" alt="" />

  tomcat配置串連池

 
  1. tomcat串連池配置 
  2. vi/vim server.xml
  3.  
  4. Oracle資料庫的串連池配置
  5. 在<host> </host>中配置如下資訊 
  6. <Resource
  7. auth="Container"
  8. description="sqlserver Datasource"
  9. name="jdbc/ora"
  10. type="javax.sql.DataSource"
  11. maxActive="50"
  12. maxIdle="10"
  13. username="" ---->串連資料庫的使用者名稱
  14. maxWait="10000"
  15. driverClassName="oracle.jdbc.driver.OracleDriver"
  16. password=""----->串連資料庫的使用者密碼
  17. url="jdbc:oracle:thin:@host:port/databases"
  18. removeAbandoned="true"
  19. removeAbandonedTimeout="60"
  20. logAbandoned="true"/>
  21.  
  22. MySQL資料庫的串連池配置
  23.  
  24. <Resource
  25. name="jdbc/TestDB"
  26. auth="Container"
  27. type="javax.sql.DataSource"
  28. maxActive="100"
  29. maxIdle="30"
  30. maxWait="10000"
  31. username="javauser"
  32. password="javadude"
  33. driverClassName="com.mysql.jdbc.Driver"
  34. url="jdbc:mysql://localhost:3306/javatest"/>
  35.  
  36. SQL的串連池配置
  37. <Resource
  38. auth="Container"
  39. description="sqlserver Datasource"
  40. name="jdbc/sqlserver110"
  41. type="javax.sql.DataSource"
  42. maxActive="100"
  43. maxIdle="10"
  44. username=""
  45. maxWait="10000"
  46. driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
  47. password=""
  48. url="jdbc:microsoft:sqlserver:IP(連接埠);資料庫名字;"reconnect=true"
  49. removeAbandoned="true"
  50. removeAbandonedTimeout="60"
  51. logAbandoned="true" />

tomcat5.5參數解釋:

 
  1. tomcat5.5參數說明: 
  2. 1  maxActive: Maximum number of dB connections in pool. Make sure you 
  3.            configure your mysqld max_connections large enough to handle 
  4.            all of your db connections. Set to -1 for no limit 
  5.          串連池中最大的串連數 設為-1 表示不限制  注意資料的串連數要大於此串連數 
  6. 2  maxIdle: Maximum number of idle dB connections to retain in pool. 
  7.          Set to -1 for no limit.  See also the DBCP documentation on this 
  8.          and the minEvictableIdleTimeMillis configuration parameter      
  9.          保持在串連中最大的閑置串連數(在串連池最大的空閑串連數) 
  10. 3  maxWait: Maximum time to wait for a dB connection to become available 
  11.          in ms, in this example 10 seconds. An Exception is thrown if 
  12.          this timeout is exceeded.  Set to -1 to wait indefinitely 
  13.          等待一個串連成為可用串連的最大等待時間 單位毫秒ms 
  14. 4  driverClassName: Class name for the old mm.mysql JDBC driver is 
  15.          org.gjt.mm.mysql.Driver - we recommend using Connector/J though. 
  16.          Class name for the official MySQL Connector/J driver is com.mysql.jdbc.Driver.       
  17. 5    url: The JDBC connection url for connecting to your MySQL dB 
  18. 6    removeAbandoned="true" abandoned dB connections are removed and recycled) 
  19.         解釋:被遺棄的資料連線 回收到串連池中    預設為false 
  20. 7    removeAbandonedTimeout="60"a dB connection has been idle before it is considered abandoned)單位秒 
  21.         解釋:在一個串連空閑多少秒會被遺棄 
  22. 8   logAbandoned="true"  
  23.         記錄被遺棄的資料連線 預設為false 

在web應用程式的目錄下建立WEB-INF/web.xml,並添加如下內容

 
  1. web.xml configuration 
  2. <resource-ref> 
  3.  <description>Oracle Datasource example</description> 
  4.  <res-ref-name>jdbc/myoracle</res-ref-name> 
  5.  <res-type>javax.sql.DataSource</res-type> 
  6.  <res-auth>Container</res-auth> 
  7. </resource-ref>  

JSP串連資料庫的使用者

 
  1. MySQL configuration  
  2. mysql> GRANT ALL PRIVILEGES ON *.* TO javauser@localhost  
  3.     ->   IDENTIFIED BY 'javadude' WITH GRANT OPTION; 
  4. mysql> create database javatest; 
  5. mysql> use javatest; 
  6. mysql> create table testdata ( 
  7.     ->   id int not null auto_increment primary key, 
  8.     ->   foo varchar(25),  
  9.     ->   bar int);       
  10. mysql> insert into testdata values(null, 'hello', 12345); 
  11. Query OK, 1 row affected (0.00 sec) 
  12. mysql> select * from testdata; +----+-------+-------+ | ID | FOO | BAR | +----+-------+-------+ | 1 | hello | 12345 | +----+-------+-------+ 1 row in set (0.00 sec) 注意:Create a new test user, a new database and a single test table. Your MySQL user must have a password assigned. The driver will fail if you try to connect with an empty password Note!!!: the above user should be removed once testing is complete!
  13. 650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131229/1Z62523H-3.png" border="0" alt="" />

JSP測試頁面

 
  1. <%@ page import="java.sql.*" %> 
  2. <%@ page contentType="text/html; charset=gb2312" %> 
  3. <%@ page language="java" %> 
  4. <%@ page import="com.mysql.jdbc.Driver" %> 
  5. <%@ page import="java.sql.*" %> 
  6. <% 
  7. String driverName="com.mysql.jdbc.Driver"; 
  8. String userName="javauser"; 
  9. String userPasswd="java"; 
  10. String dbName="javatest"; 
  11. String tableName="testdata"; 
  12. String url="jdbc:mysql://localhost/"+dbName+"?user="+userName+"&password="+userPasswd; 
  13. Class.forName("com.mysql.jdbc.Driver").newInstance(); 
  14. Connection connection=DriverManager.getConnection(url); 
  15. Statement statement = connection.createStatement(); 
  16. String sql="SELECT * FROM "+tableName; 
  17. ResultSet rs = statement.executeQuery(sql); 
  18. while (rs.next()) 
  19.  String foo = rs.getString("foo"); 
  20.  String bar = rs.getString("bar"); 
  21. out.print(foo+" "); 
  22. out.print(bar+" "); 
  23. rs.close(); 
  24. statement.close(); 
  25. connection.close(); 
  26. %> 
  27. 上述代碼僅是實現的一例。

四:測試

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131229/1Z6253315-4.png" border="0" alt="" />

本文出自 “好望角” 部落格,轉載請與作者聯絡!

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.