Мой проект содержит 4 класса. У меня нет идеи, почему она не работает.JSP + JDBC issue
класс ConnectionManager:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class ConnectionManager {
private static ConnectionManager instance = null;
private final String USERNAME = "root";
private final String PASSWORD = "";
private final String CONN_STRING ="jdbc:mysql://localhost:3306/jdbc";
private Connection conn = null;
private ConnectionManager(){
}
public static ConnectionManager getInstance(){
if(instance==null){
instance = new ConnectionManager();
}
return instance;
}
private boolean openConnection(){
try {
conn = DriverManager.getConnection(CONN_STRING, USERNAME, PASSWORD);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return true;
}
public Connection getConnection(){
if(conn==null){
if(openConnection()){
System.out.println("Connection Opened");
return conn;
}
else
return null;
}
return conn;
}
public void close(){
System.out.println("Closing Connection");
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
conn=null;
}
}
DBManager класс:
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class DbManager {
private static Connection conn = ConnectionManager.getInstance().getConnection();
public static void Insert(GetsSets set) throws ClassNotFoundException, SQLException{
Class.forName("com.mysql.jdbc.Driver");
String sql = "INSERT INTO register (fname,lname,gender,state,email,password,age,address,skill) VALUES (?,?,?,?,?,?,?,?,?)";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, set.getFname());
pstmt.setString(2, set.getLname());
pstmt.setString(3, set.getGender());
pstmt.setString(4, set.getState());
pstmt.setString(5, set.getEmail());
pstmt.setString(6, set.getPassword());
pstmt.setString(7, set.getAge());
pstmt.setString(8, set.getAddress());
pstmt.setString(9, set.getSkill());
pstmt.executeUpdate();
ConnectionManager.getInstance().close();
}
}
GetSets класс:
public class GetsSets {
private String fname;
private String lname;
private String gender;
private String email;
private String state;
private String password;
private String age;
private String address;
private String skill;
private int id;
public String getFname() {
return fname;
}
public void setFname(String fname) {
this.fname = fname;
}
public String getLname() {
return lname;
}
public void setLname(String lname) {
this.lname = lname;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getSkill() {
return skill;
}
public void setSkill(String skill) {
this.skill = skill;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}}
и сервлет:
import java.io.IOException;
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;
@WebServlet("/RegServlet")
public class RegServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
StringBuilder csvSkills = new StringBuilder();
public RegServlet() {
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
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
String fname = request.getParameter("txtFName");
String lname = request.getParameter("txtLName");
String gender = request.getParameter("rdoGender");
String email = request.getParameter("txtEmail");
String password = request.getParameter("txtPassword");
String state = request.getParameter("cboStates");
String age = request.getParameter("cboAge");
String address = request.getParameter("txtAddress");
String skill[] = request.getParameterValues("chkSkills");
for (String skills : skill) {
if (csvSkills.length() > 0) {
csvSkills.append(",");
csvSkills.append(skills);
}
String csvSkill = csvSkills.toString();
GetsSets sets = new GetsSets();
sets.setFname(fname);
sets.setLname(lname);
sets.setGender(gender);
sets.setEmail(email);
sets.setPassword(password);
sets.setState(state);
sets.setAge(age);
sets.setAddress(address);
sets.setSkill(csvSkill);
try {
DbManager.Insert(sets);
} catch (ClassNotFoundException | SQLException e) {
System.out.println("blad w RegServlet");
e.printStackTrace();
}
}
}
}
Я получаю следующее сообщение об ошибке:
INFO: запуск сервера в 1171 мс java.sql.SQLException: Нет подходящей водитель найдено для JDBC: MySQL: // локальный: 3306/JDBC
в java.sql.DriverManager.getConnection (Unknown Source)
в java.sql.DriverManager.getConnection (Unknown Source)
(...)
на java.lang.Thread.run (Unknown Source)
Подключение Открытый
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
в org.apache .catalina.loader.WebappClassLoader.loadClass (WebappClassLoader.java:на org.apache.catalina.loader.WebappClassLoader.loadClass (WebappClassLoader.java:1547)
на java.lang.Class.forName0 (Native Method)
Я также создал другой класс в рамках одного проекта, простой JDBC + тот же Databse и она прекрасно работает (без JSP и сервлетов). - доказывает, что разъем mysql реализован в библиотеке правильно. я прав?. Также этот класс читает таблицу из localhost. Я не знаю, что случилось. Я хотел подключить сервлет с БД.
мой проект в затмении: http://i.imgur.com/D4o3EU6.jpg
Очевидно, что драйвер JDBC отсутствует. Вам нужно добавить библиотеку JDBC MySQL в путь к классу проекта. Получите это отсюда: http://dev.mysql.com/downloads/connector/j – qqilihq
Добавлен драйвер JDBC. проверьте скриншот, пожалуйста. Или, может быть, его добавили неправильно? – user3160441
Решил ли мой вопрос вашу проблему? – Mani