【发布时间】:2015-08-03 18:07:00
【问题描述】:
我有一个本地 MySQL 数据库。当我创建一个简单的 Java 项目,其中一个类只包含 main 时,我成功地使用 JDBC 连接器 jar 从数据库中检索了一些数据,使用构建路径导入 -> 添加外部 jar,它运行良好。
然后我尝试使用类似的方法,但现在在 Dynamic Web Project 中,我正在使用 Servlet,但我得到 java.sql.SQLException: No suitable driver found对于 jdbc:mysql://localhost/ePay.
我一直在寻找类似问题的答案几个小时,到目前为止,这是我尝试放置 JDBC MySQL 连接器的地方:
- 直接进入 Java Resources 文件夹
- 进入 Java 资源中的 lib 文件夹
- 进入 WebContent/WEB-INF/lib/
我需要 web.xml 还是 context.xml?我阅读了使用它们的教程,尝试实现解释的示例,但我仍然遇到同样的问题。
我正在开发 Linux Mint 17,在 Eclipse IDE 中使用 Tomcat 7。
这是我的项目结构的照片:
以下是相关类:
package dbObjects;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Entity {
protected Connection getConnection() throws SQLException {
String pass = "mypass";
String userDB = "root";
Connection conn = DriverManager.getConnection(
"jdbc:mysql://localhost/ePay", userDB, pass);
return conn;
}
protected ResultSet getResultSet(String sql) throws SQLException {
Connection conn = getConnection();
Statement st = conn.createStatement();
return st.executeQuery(sql);
}
}
用户类:
package dbObjects;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Date;
public class User extends Entity {
private long idUser;
private String userName;
private String pass;
private String fullName;
private String email;
private Date dateOfBirth;
private String address;
public User(long idUser, String userName, String pass, String fullName,
String email, Date dateOfBirth, String address) {
super();
this.idUser = idUser;
this.userName = userName;
this.pass = pass;
this.fullName = fullName;
this.email = email;
this.dateOfBirth = dateOfBirth;
this.address = address;
}
public User(long idUser) throws SQLException {
super();
this.idUser = idUser;
setUserById(idUser);
}
private void setUserById(long idUser) throws SQLException {
ResultSet resultSet = getResultSet("SELECT * FROM User WHERE idUser = " + idUser);
while(resultSet.next()) {
System.out.println(resultSet.getInt("idUser"));
userName = resultSet.getString("username");
pass = resultSet.getString("pass");
fullName = resultSet.getString("fullname");
email = resultSet.getString("email");
dateOfBirth = resultSet.getDate("dateOfBirth");
address = resultSet.getString("address");
}
}
@Override
public String toString() {
return userName;
}
}
还有我正在尝试运行的 servlet:
package servlets;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import dbObjects.User;
/**
* Servlet implementation class HomeServlet
*/
@WebServlet(description = "Home page shown to user", urlPatterns = { "/HomeServlet" })
public class HomeServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public HomeServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
User user = null;
try {
user = new User(1);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
PrintWriter pw = response.getWriter();
pw.println(user);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}
}
【问题讨论】:
-
为什么不尝试创建一个 Maven 项目?
-
@FernandoGarcia 我没有网络开发经验。我需要简单的网络应用程序,我用谷歌搜索,在我看来,这似乎是创建网络应用程序的最简单方法。我需要它用于学校项目,其主要目标不是实现网络应用程序,我需要该应用程序只是为了显示结果:) 非常欢迎任何建议。
标签: java mysql tomcat servlets jdbc