使用工具:TOMCAT 7.0.52、IntelliJ IDEA 13.0.2、JSF 2.0+、SqlServer、jtds-1.2.5.jar
搞了好久都沒成功,開始使用注解引入DataSource,可是一直不成功,后來使用lookup方式,寫了一個本地主類(包含main方法)測試,也是不成功,艸,都快崩潰了,后來經(jīng)過各種測試,終于搞定了,本地主類測試是無效的,必須通過web訪問才能成功,真尼瑪?shù)疤邸W⒔夤烙嫺姹居嘘P(guān),沒精力去弄了。
以下是配置步驟(相應(yīng)的路徑換成自己的):
1、把jtds-1.2.5.jar放到Tomcat目錄里的lib目錄下。如:D:\IntelliJ\tomcat7\lib
2、在D:\IntelliJ\tomcat7\conf目錄里的context.xml文件里加上如下代碼:
1 < Context > 2 < WatchedResource > WEB-INF/web.xml </ WatchedResource > 3 < Resource name ="jdbc/sqlserver" auth ="Container" type ="javax.sql.DataSource" 4 driverClassName ="net.sourceforge.jtds.jdbc.Driver" 5 url ="jdbc:jtds:sqlserver://localhost:1433/yourDatabaseName" 6 username ="username" password ="password" maxActive ="100" maxIdle ="30" /> 7 </ Context >
3、在你項目里的web.xml文件里加入如下內(nèi)容:
1 <!-- 配置數(shù)據(jù)源 --> 2 < resource-ref > 3 < description > Sqlserver Datasource </ description > 4 < res-ref-name > jdbc/sqlserver </ res-ref-name > 5 < res-type > javax.sql.DataSource </ res-type > 6 < res-auth > Container </ res-auth > 7 </ resource-ref >
4、在你的代碼里引用數(shù)據(jù)源:
1 private DataSource ds; 2 3 public LoginBean() { 4 5 try { 6 // 初始化查找命名空間 7 Context ctx = new InitialContext(); 8 ds = (DataSource)ctx.lookup("java:comp/env/jdbc/sqlserver" ) ; 9 } catch (NamingException e) { 10 System.out.println("使用lookup找不到數(shù)據(jù)源." ); 11 e.printStackTrace(); 12 } 13 14 }
5、測試test.jsp:
<%@ page language="java" import ="java.util.*" pageEncoding="utf-8" %> <%@ page import ="java.sql.*"%> <%@ page import ="javax.sql.*"%> <%@ page import ="javax.naming.*"%> <%! final String JNDINAME = "java:comp/env/jdbc/sqlserver" ; %> <% Connection conn = null ; try { // 初始化查找命名空間 Context ctx = new InitialContext() ; // 找到DataSource DataSource ds = (DataSource)ctx.lookup(JNDINAME) ; conn = ds.getConnection() ; String sql ="select passwd,logincount from credential where username=?" ; PreparedStatement pwdQuery = conn.prepareStatement(sql); pwdQuery.setString( 1,"admin" ); ResultSet result = pwdQuery.executeQuery(); if (! result.next()){ return ; } System.out.println(result.getString( "passwd" )) ; } catch (Exception e) { System.out.println(e) ; } %> <%=conn%> <% // 將連接重新放回到池中 conn.close() ; %>
?
只要能輸出數(shù)據(jù)庫的連接信息就沒問題了。
?
如果注解不能使用,就不要糾結(jié)了,換種方式。
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
