jialisoftw

          Myeclipse中JDBC連接池的配置

          軟件版本myeclispe8.0,自帶tomcat6.0.13。

          jdbc:mysql-connector-java-5.1.13-bin.jar


          第一步:建立工程。

          在Myeclipse中file->new->web project。

          因為在測試數據源(jsp)時用到了標簽庫,所以可以在這里選上jsdl支持,當然也可以在工程建好后右鍵工程文件夾->myeclipse->add JSTL

          Libraries…實現同樣的功能。


          第二步:導入jdbc的jar包。

          要直接將mysql-connector-java-3.1.7-bin.jar復制到“工程文件夾/WebRoot/WEB-INF/lib”文件夾下。這時,myeclipse會自動生成一個

          Referenced Libraries,不用管。


          第三步:建立context.xml文件。

          在“工程文件夾/WebRoot/META-INF”下,新建context.xml文件。文件內容如下:

          <?xml version="1.0" encoding="UTF-8"?>
          <Context debug="5" reloadable="true">
          <Resource
          name="jdbc/mysql"
          auth="Container"
          type="javax.sql.DataSource"
          maxActive="100"
          maxIdle="30"
          maxWait="10000"
          username="root"
          password=""
          driverClassName="com.mysql.jdbc.Driver"
          url="jdbc:mysql://localhost:3306/javatest?autoReconnect=true" />
          </Context>

          解釋:
          name="jdbc/mysql"   //連接名,jndi中使用。具在JSP中用<sql:query var="rs" dataSource="jdbc/mysql">調用,servlet用 DataSource ds

          = (DataSource)ctx.lookup("java:comp/env/jdbc/mysql");調用。這里是tomcat的格式,不同的服務器可能有所不同。

          auth="Container"    
          type="javax.sql.DataSource"   
          maxActive="100"
          maxIdle="30"
          maxWait="10000"
          username="root"    //mysql的用戶名
          password=""        //mysql的用戶密碼,我這里是空 
          driverClassName="com.mysql.jdbc.Driver"   //驅動類名,一般確定
          url="jdbc:mysql://localhost:3306/javatest?autoReconnect=true" //javatest是mysql中要使用的數據庫名

          第四步:修改web.xml文件。

          在web.xml文件中添加以下內容:                  //重要一定添加進去

          <resource-ref>
                <description>DB Connection</description>
                <res-ref-name>jdbc/mysql</res-ref-name>
                <res-type>javax.sql.DataSource</res-type>
                <res-auth>Container</res-auth>
          </resource-ref>

          這部分內容一般是確定的。

          OK,現在可以測試數據源是否好了。下面是JSP測試文件:

          <%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
          <%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
          <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
          <%
          String path = request.getContextPath();
          String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
          %>

          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
          <html>
          <head>
              <base href="<%=basePath%>">
              
              <title>My JSP 'MyJsp.jsp' starting page</title>
              
              <meta http-equiv="pragma" content="no-cache">
              <meta http-equiv="cache-control" content="no-cache">
              <meta http-equiv="expires" content="0">    
              <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
              <meta http-equiv="description" content="This is my page">
              <!--
              <link rel="stylesheet" type="text/css" href="styles.css">
              -->
          <sql:query var="rs" dataSource="jdbc/mysql">
          select id, username, password from user
          </sql:query>
          </head>

          <body>
             <h2>Results</h2>

          <c:forEach var="row" items="${rs.rows}">
              Foo ${row.username}<br/>
              Bar ${row.password}<br/>
          </c:forEach> <br>
          </body>
          </html>

          當然,如果你用servlet測試數據源也是可以的,下面是一個servlet測試例子:

          package fx;

          import java.io.IOException;
          import java.io.PrintWriter;
          import java.sql.Connection;
          import java.sql.ResultSet;
          import java.sql.SQLException;

          import javax.naming.Context;
          import javax.naming.InitialContext;
          import javax.naming.NamingException;
          import javax.servlet.ServletException;
          import javax.servlet.http.HttpServlet;
          import javax.servlet.http.HttpServletRequest;
          import javax.servlet.http.HttpServletResponse;
          import javax.sql.DataSource;

          public class DsTest extends HttpServlet
          {

              /**
               * Constructor of the object.
               */
              public DsTest()
              {
                  super();
              }

              /**
               * Destruction of the servlet. <br>
               */
              public void destroy()
              {
                  super.destroy(); // Just puts "destroy" string in log
                  // Put your code here
              }

              /**
               * The doGet method of the servlet. <br>
               *
               * This method is called when a form has its tag value method equals to get.
               * 
               * @param request the request send by the client to the server
               * @param response the response send by the server to the client
               * @throws ServletException if an error occurred
               * @throws IOException if an error occurred
               */
              public void doGet(HttpServletRequest request, HttpServletResponse response)
                      throws ServletException, IOException
              {

                  doPost(request,response);
              }

              /**
               * The doPost method of the servlet. <br>
               *
               * This method is called when a form has its tag value method equals to post.
               * 
               * @param request the request send by the client to the server
               * @param response the response send by the server to the client
               * @throws ServletException if an error occurred
               * @throws IOException if an error occurred
               */
              public void doPost(HttpServletRequest request, HttpServletResponse response)
                      throws ServletException, IOException
              {

                  response.setContentType("text/html");
                  PrintWriter out = response.getWriter();
                  out
                          .println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
                  out.println("<HTML>");
                  out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
                  out.println(" <BODY>");
                  out.print("    This is ");
                  out.print(this.getClass());
                  out.println(", using the POST method");
                  try
                  {

                     Context ctx = new InitialContext();
                     DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/mysql");
                     Connection conn = ds.getConnection();
                     ResultSet rs=conn.createStatement().executeQuery("select * from user");
                     rs.next();
                     out.print(rs.getString(2));
                  } catch (NamingException e) {
                      e.printStackTrace(out);
                     System.out.println(e.getMessage());
                  } catch (SQLException e) {
                     e.printStackTrace(out);
                  }
                  out.println("connection pool connected !!haha"); 
                  out.println(" </BODY>");
                  out.println("</HTML>");
                  out.flush();
                  out.close();
              }

              /**
               * Initialization of the servlet. <br>
               *
               * @throws ServletException if an error occurs
               */
              public void init() throws ServletException
              {
                  // Put your code here
              }

          }


          我的mysql數據庫名為javatest,表名為user,有三列"id","username","password"。servlet運行結果將打印出user表中的第一個用戶名。

          注意:如果你新建servlet,myeclipse會自動幫你在web.xml中生成相應的mapping,而這部分內容可能“插”進

          <resource-ref>
                <description>DB Connection</description>
                <res-ref-name>jdbc/mysql</res-ref-name>
                <res-type>javax.sql.DataSource</res-type>
                <res-auth>Container</res-auth>
          </resource-ref>

          中,造成錯誤。注意自己手動調整?!     ?/要看一下,因為我的好像沒有這段代碼

          別外,注意myeclipse中的servlet映射為“服務器ip:端口/工程文件名/servlet/servlet名”。

           

           

           

           

          還有就是最好使用外部自己配置的Tomcat,并將mysql-connector-java-5.1.13-bin.jar包放到Tomcat的lib目錄下。

          最好不要用MyEclipse自帶的Tomcat,因為我的MyEclipse提示org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot load JDBC driver class 'com.mysql.jdbc.Driver'

          即Tomcat出現異常,找不到jdbc驅動包

          posted on 2012-10-11 15:34 飛豬一號 閱讀(2474) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          導航

          <2012年10月>
          30123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          統計

          常用鏈接

          留言簿

          隨筆檔案

          友情鏈接

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 盐亭县| 乐山市| 中方县| 广德县| 白城市| 台南市| 祥云县| 同德县| 明光市| 永靖县| 齐齐哈尔市| 雷州市| 文山县| 嘉义县| 阳原县| 云和县| 休宁县| 藁城市| 乌兰察布市| 张家港市| 湖北省| 桐柏县| 桂东县| 东至县| 洛隆县| 宣汉县| 郎溪县| 江孜县| 邯郸市| 昭苏县| 凤冈县| 商都县| 隆化县| 来宾市| 西畴县| 泾川县| 大石桥市| 綦江县| 棋牌| 永川市| 大田县|