表題のところですがエラーが消えません。ドライバー接続の問題でしょうか。
プロジェクト内の参照ライブラリーには、
/Users/yutanakai/Downloads/mysql-connector-java-8.0.13/mysql-connector-java-8.0.13.jar
とドライバーに接続できるようにしています。他ファイルでは上手くいきます。
java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver
ログイン画面でパスとIDをこのファイルに送信します。
値は入ってきているようです。
java
1package servlet; 2 3import java.io.IOException; 4import java.util.List; 5 6import javax.servlet.RequestDispatcher; 7import javax.servlet.ServletException; 8import javax.servlet.annotation.WebServlet; 9import javax.servlet.http.HttpServlet; 10import javax.servlet.http.HttpServletRequest; 11import javax.servlet.http.HttpServletResponse; 12import javax.servlet.http.HttpSession; 13 14import dao.JavaEnglishDAO; 15import model.Student; 16import model.Teacher; 17 18@WebServlet("/LoginServlet") 19public class LoginServlet extends HttpServlet { 20 private static final long serialVersionUID = 1L; 21 22 protected void doPost(HttpServletRequest request, 23 HttpServletResponse response) 24 throws ServletException, IOException { 25 26 // リクエストパラメータの取得 27 request.setCharacterEncoding("UTF-8"); 28 29 String login = request.getParameter("login"); 30 String signup = request.getParameter("signup"); 31 32 if (signup != null) { 33 RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/signup.jsp"); 34 dispatcher.forward(request, response); 35 } else if (login != null) { 36 String id = request.getParameter("id"); 37 String pass = request.getParameter("pass"); 38 //値が入ってきているか確認 39 System.out.println(id); 40 System.out.println(pass); 41 42 //ここでJavaEnglishDAOを呼び出す 43 JavaEnglishDAO dao = new JavaEnglishDAO(); 44 Student student = dao.getStudent(id, pass); 45 List<Teacher> teachers = dao.getTeachers(); 46 47 if (student != null && teachers != null) { 48 HttpSession session = request.getSession(); 49 session.setAttribute("student", student); 50 session.setAttribute("student", student); 51 RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/teacher.jsp"); 52 dispatcher.forward(request, response); 53 } else { 54 RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/login.jsp"); 55 dispatcher.forward(request, response); 56 } 57 58 } 59 } 60}
こちらがDB操作を扱うjavaファイルです。
JAVA
1package dao; 2 3import java.sql.Connection; 4import java.sql.DriverManager; 5import java.sql.PreparedStatement; 6import java.sql.ResultSet; 7import java.sql.SQLException; 8import java.util.ArrayList; 9import java.util.List; 10 11import model.Student; 12import model.Teacher; 13 14public class JavaEnglishDAO { 15 //Studentを返す 16 public Student getStudent(String id, String pass) { 17 18 Connection conn = null; 19 Student student = null; 20 int rsCount = 0; 21 22 try { 23 // JDBCドライバを読み込む 24 Class.forName("com.mysql.cj.jdbc.Driver"); 25 26 // データベースに接続 27 conn = DriverManager.getConnection("jdbc:mysql://localhost:8889/JavaEnglish", "tennisuser", "password"); 28 System.out.println("has reached"); 29 // SELECT文を準備 30 String sql = "SELECT * FROM students WHERE student_id = ? student_pass = ?"; 31 PreparedStatement pStmt = conn.prepareStatement(sql); 32 pStmt.setString(1, id); 33 pStmt.setString(2, pass); 34 35 // SELECTを実行し、結果表を取得 36 ResultSet rs = pStmt.executeQuery(); 37 38 while (rs.next()) { 39 rsCount = rsCount + 1; 40 } 41 // 一致したユーザーが存在した場合 42 // そのユーザーを表すAccountインスタンスを生成 43 if (rsCount == 1) { 44 String studentid = rs.getString("student_id"); 45 String studentpass = rs.getString("student_pass"); 46 String studentname = rs.getString("student_name"); 47 String studentplan = rs.getString("student_plan"); 48 49 student = new Student(studentid, studentpass, studentname, studentplan); 50 } 51 52 } catch (SQLException e) { 53 e.printStackTrace(); 54 return null; 55 } catch (ClassNotFoundException e) { 56 e.printStackTrace(); 57 return null; 58 } finally { 59 // データベースを切断 60 if (conn != null) { 61 try { 62 conn.close(); 63 } catch (SQLException e) { 64 e.printStackTrace(); 65 return null; 66 } 67 } 68 } 69 // 見つかったユーザーまたはnullを返す 70 return student; 71 } 72 73 public List<Teacher> getTeachers() { 74 75 Connection conn = null; 76 List<Teacher> teachers = new ArrayList<Teacher>(); 77 78 try { 79 // JDBCドライバを読み込む 80 Class.forName("com.mysql.cj.jdbc.Driver"); 81 82 // データベースに接続 83 conn = DriverManager.getConnection("jdbc:mysql://localhost:8889/JavaEnglish", "tennisuser", "password"); 84 85 // SELECT文を準備 86 String sql = "SELECT * FROM teachers;"; 87 PreparedStatement pStmt = conn.prepareStatement(sql); 88 89 // SELECTを実行し、結果表を取得 90 ResultSet rs = pStmt.executeQuery(); 91 92 // そのユーザーを表すTeacherインスタンスを生成しリストに追加 93 while (rs.next()) { 94 teachers.add(new Teacher(rs.getInt("teacher_id"), rs.getString("teacher_name"), rs.getString("major"), 95 rs.getString("sex"))); 96 } 97 98 } catch (SQLException e) { 99 e.printStackTrace(); 100 return null; 101 } catch (ClassNotFoundException e) { 102 e.printStackTrace(); 103 return null; 104 } finally { 105 // データベースを切断 106 if (conn != null) { 107 try { 108 conn.close(); 109 } catch (SQLException e) { 110 e.printStackTrace(); 111 return null; 112 } 113 } 114 } 115 // 見つかったユーザーまたはnullを返す 116 return teachers; 117 } 118}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。