为tomcat7配置Postgres驱动程序(连接器)

时间:2014-06-16 13:30:07

标签: postgresql jsp jdbc tomcat7 mysql-connector

我一直试图让我的jsp代码有一些postgresql查询工作。我不知道是什么问题,是否是jdbc驱动程序配置的问题或我的代码有问题。

这是context.xml中的配置。

<Resource name="jdbc/filedb" auth="Container"
          type="javax.sql.DataSource" driverClassName="org.postgresql.Driver"
          url="jdbc:postgresql://127.0.0.1:5432/testdb"
          username="akshay" password="akshay" maxActive="20" maxIdle="10"
maxWait="-1"/> 

我也想知道什么是资源名称。在这里,我添加了表格名称whichis filedb。

这就是server.xml的外观。

 <GlobalNamingResources>

    <Resource name="jdbc/filedb" auth="Container"
              type="javax.sql.DataSource"
          username="akshay" 
          password="akshay"
          driverClassName="org.postgresql.Driver"
              description="User database that can be updated and saved"
          url="jdbc:postgresql://127.0.0.1:5432/testdb"
          maxActive="20" 
          maxIdle="10"
          maxWait="-1"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>

我尝试使用并且没有上述配置。

这是我添加到web.xml

的内容
  <resource-ref>
 <description>postgreSQL Datasource example</description>
 <res-ref-name>jdbc/filedb</res-ref-name>
 <res-type>javax.sql.DataSource</res-type>
 <res-auth>Container</res-auth>
</resource-ref>

这是我的代码:

<html>
<body>
<form name=f1 method=Post action="http://localhost:8080/filedb1.jsp">

<table>
<td>
Add Header 1<input type=text name=header1 id=header1>
</td><td>
Add Header 2<input type=text name=header2 id=header2>
</td><td>
Add Header 3<input type=text name=header3 id=header3>
</td><td>
Add Header 4<input type=text name=header4 id=header4>
</td>
<tr>
<td>
Upload File 1<input type=file name=path1 id=file1></td><td>
Upload File 2<input type=file name=path2 id=file2></td><td>
Upload File 3<input type=file name=path3 id=file3></td><td>
Upload File 4<input type=file name=path4 id=file4></td>
</tr>
</table>
<div align="center">
<input type=submit value="SUBMIT" onclick="f1.action='http://localhost:8080/filedb1.jsp';return true;">
</div>
</form>
<%@ page import="java.sql.*" %>
<%@ page import="javax.servlet.*" %>
<%@ page import="javax.servlet.http.*" %>
<%@ page import="java.io.*" %>
<%@ page import="java.util.*" %>
<%@ page language="java" session="true" %>

<%
   String file1 = request.getParameter("file1");
   String file2 = request.getParameter("file2");
   String file3 = request.getParameter("file3");
   String file4 = request.getParameter("file4");
   String header1 = request.getParameter("header1");
   String header2 = request.getParameter("header2");
   String header3 = request.getParameter("header3");
   String header4 = request.getParameter("header4");
   java.sql.Connection con;
   con=null;

   PreparedStatement psmt=null;
   PreparedStatement psmt1=null;
   PreparedStatement psmt2=null;
   PreparedStatement psmt3=null;

   try{
   Class.forName("org.postgresql.Driver");
   con = DriverManager.getConnection("jdbc:postgresql://127.0.0.1:5432/testdb","akshay","akshay");
   psmt=con.prepareStatement("insert into filedb(id,header,content)"+"values (?,?,?)");
   psmt.setInt(1,1);
   psmt.setString(2,header1);
   psmt.setString(3,file1);
   int s = psmt.executeUpdate();
   %> <font color="orange"> 
  <%
    if(s>0) 
     {
      %><%out.println("File Name :"+file1+" added to database.");%><%
     }
    else
     {
     %><%out.println("File Name :"+file1+" unsuccessfull attempt while adding to database.");%><%
     }   
   psmt1=con.prepareStatement("insert into filedb(id,header,content)"+"values (?,?,?)");
   psmt1.setInt(1,2);
   psmt1.setString(2,header2);
   psmt1.setString(3,file2);
   int s1 = psmt1.executeUpdate();
  if(s1>0) 
     {
      out.println("File Name :"+file2+" added to database.");
     }
    else
     {
     out.println("File Name :"+file2+" unsuccessfull attempt while adding to database.");
     }   
   psmt2=con.prepareStatement("insert into filedb(id,header,content)"+"values (?,?,?)");
   psmt2.setInt(1,3);
   psmt2.setString(2,header3);
   psmt2.setString(3,file3);
   int s2 = psmt2.executeUpdate();
  if(s2>0) 
     {
      out.println("File Name :"+file3+" added to database.");
     }
    else
     {
     out.println("File Name :"+file3+" unsuccessfull attempt whileadding to database.");
     }   
   psmt3=con.prepareStatement("insert into filedb(id,header,content)"+"values (?,?,?)");
   psmt3.setInt(1,4);
   psmt3.setString(2,header4);
   psmt3.setString(3,file4);
   int s3 = psmt3.executeUpdate();
  if(s3>0) 
     {
      out.println("File Name :"+file4+" added to database.");
     }
    else
     {
     out.println("File Name :"+file4+" unsuccessfull attempt whileadding to database.");
     }   
    psmt1.close();
  psmt2.close();
  psmt3.close();
  psmt.close();
  con.commit();
  con.close();
  }
  catch(Exception ex)
  {
  ex.printStackTrace();
  }

%> 

</font>

</body>
</html>

表格提交

    Table "public.filedb"
 Column  |  Type   | Modifiers 
---------+---------+-----------
 id      | integer | not null
 header  | text    | not null
 content | text    | not null

我没有收到任何错误,但表中没有更新。没有新记录。

我为我的问题的糟糕缩进和微不足道的性质道歉,但我无法超越它。任何帮助表示赞赏。

编辑:

我认为,如果我能够在投票中获得理由,那将对我有益,这样我就能改进这个问题。你也可以说明为什么jsp不应该包含jdbc,如果是的话,我可以采取什么替代措施来使用jdbc。

1 个答案:

答案 0 :(得分:0)

所以我使用了mysql连接器。

这是我添加到web.xml

的内容
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/test</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>

以下是我添加到context.xml

的内容
  <Resource name="jdbc/filedb" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="akshay" password="akshay" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/test?autoReconnect=true"/>

最后这就是server.xml里面的内容

<Resource name="jdbc/filedb" auth="Container"
          type="javax.sql.DataSource"
          username="akshay"
          password="akshay"
          driverClassName="com.mysql.jdbc.Driver"
          description="User database that can be updated and saved"
          url="jdbc:mysql://127.0.0.1:3306/test"
          maxActive="20"
          maxIdle="10"
          maxWait="-1"
          factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
          pathname="conf/tomcat-users.xml" />

我不知道为什么它不使用postgresql,但代码实际上是相同的。