2016-07-13 1 views
0

За 5 часов я пытался решить эту проблему и не yeiled никакого результата, я получаю сообщение об ошибке при нажатии Submit, это предположить, чтобы записать информацию в полей в SQL, но это не делает: enter image description hereJSP/Servlet: Что вызывает сервлет Ошибка при попытке записи на SQL?

указательного. JSP-код здесь:

contentType="text/html" pageEncoding="UTF-8"%> 
 
<!DOCTYPE html> 
 
<html> 
 
    <head> 
 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
 
     
 
     <body> 
 

 
    
 
     
 
     <form action = "servlet3" method="get"> 
 
     Register : <br> <br> 
 
     <input type="text" name ="first" placeholder="First Name"> <input type="text" name ="last" placeholder="Last Name"> <br> <br> 
 
     <input type="email" name ="email" placeholder="Email"><br> 
 
     <input type="text" name ="user" placeholder="Choose Username"><br> 
 
     <input type="password" name ="pass" placeholder="Choose a Password"><br> 
 
     <input type="password" name ="pass_ver" placeholder="Verify Password"><br> <br> <br> 
 
     <input type="submit" value ="Submit"> 
 
    </form> 
 
</body> 
 
</html>

Мой Servlet файл:

package com.let; 
 

 
import com.mysql.jdbc.Connection; 
 
import java.io.FileWriter; 
 
import java.io.IOException; 
 
import java.io.PrintWriter; 
 
import javax.servlet.ServletException; 
 
import javax.servlet.http.HttpServlet; 
 
import javax.servlet.http.HttpServletRequest; 
 
import javax.servlet.http.HttpServletResponse; 
 

 

 

 
     @Override 
 
     protected void doGet(HttpServletRequest request, HttpServletResponse response) 
 
      throws ServletException, IOException { 
 
      
 
     String first = request.getParameter("first"); 
 
     String last = request.getParameter("last"); 
 
     String email = request.getParameter("email"); 
 
     String username = request.getParameter("user"); 
 
     String pass = request.getParameter("pass"); 
 
     String pass_ver = request.getParameter("pass_ver"); 
 
     
 
     boolean reg= Record.insert(2, first, last, email, username, pass); 
 
     
 
     
 
    
 
    
 
    
 
    
 
     } 
 
    } 
 
    

Проблема с моей функции вставки, которые предполагают, чтобы быть вставки данных в SQL, это внутри класса "Рекорд", который здесь:

package com.let; 
 

 
import com.mysql.jdbc.Connection; 
 
import java.sql.DriverManager; 
 
import java.sql.SQLException; 
 
import java.sql.Statement; 
 

 

 
public class Record { 
 
    
 
    public Record(){ 
 
     
 
    } 
 
    
 
    public static boolean insert(int id, String f, String l, String email,String user,String pass){ 
 
     boolean status = true; 
 
     
 
     Connection c=null; 
 
     try{ 
 
      c=Connecting.conn; //Connecting class contains conn object which is of type Connection 
 
     Statement s = c.createStatement(); 
 
     
 
     
 
     
 
     
 
     String u = "USE login;"; //login database, info is table 
 
     s.executeUpdate(u); 
 
     String insert = "INSERT INTO login.info(ID,FIRST,LAST,EMAIL,USER,PASS) VALUES ('"+id +"','"+f +"','"+l+"','"+email+"','"+user+"','"+ Formulation.encypt(pass) +"')"; 
 
     s.executeUpdate(insert); 
 
     }catch (SQLException e){ 
 
      status =false; 
 
     } 
 
     
 
     
 
     return status; 
 
     
 
    } 
 
    
 
}

и web.xml код:

<?xml version="1.0" encoding="UTF-8"?> 
 
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> 
 
    <servlet> 
 
     <servlet-name>E1Servlet</servlet-name> 
 
     <servlet-class>com.let.serv</servlet-class> 
 
    </servlet> 
 
    <servlet> 
 
     <servlet-name>E2Servlet</servlet-name> 
 
     <servlet-class>com.let.serv2</servlet-class> 
 
    </servlet> 
 
    <servlet> 
 
     <servlet-name>E3Servlet</servlet-name> 
 
     <servlet-class>com.let.serv3</servlet-class> 
 
    </servlet> 
 
    <servlet-mapping> 
 
     <servlet-name>E1Servlet</servlet-name> 
 
     <url-pattern>/servlet1</url-pattern> 
 
    </servlet-mapping> 
 
    <servlet-mapping> 
 
     <servlet-name>E2Servlet</servlet-name> 
 
     <url-pattern>/servlet2</url-pattern> 
 
    </servlet-mapping> 
 
    <servlet-mapping> 
 
     <servlet-name> E3Servlet</servlet-name> 
 
     <url-pattern>/servlet3</url-pattern> 
 
    </servlet-mapping> 
 
    <session-config> 
 
     <session-timeout> 
 
      30 
 
     </session-timeout> 
 
    </session-config> 
 
</web-app>

Соединительный класс, что содержит фактическое соединение и может вернуться «подключ» тип подключения, он работает нормально, так нет необходимости размещать его код.

Итак, вот что я устал:

  • Проверка, что соединение SQL хорошо путем создания главного класса в проекте и запустить его с помощью ручных переменных и вставить их в функции вставки внутри класса Record. ... OK
  • Распечатать информацию из полей, поступающих из JSP обратно в JSP с помощью response.out.println(), чтобы убедиться, что переменные не являются пустой .... OK

  • задаваемые другие если мне нужно определить SQL в файле web.xml ..... (мне не нужно определять е его)

Итак, что я знаю, до сих пор, что ошибка, начиная с этой линии, которая вызывающей функции:

boolean reg= Record.insert(2, first, last, email, username, pass); 

То есть ofcorse в соответствии с кодом ошибки на веб-сайте с указанием что это, где приходит ошибка, а также сообщения об ошибках говорят, что эта линия также делает ошибку (или не выполняется):

Statement s = c.createStatement(); 

Я был бы удивлен, чтобы узнать, почему эти ошибки являются generatin потому что я чувствую, что я много чего пробовал, и ничего не работает, так что это было мое последнее средство.

UPDATE: Вот Подключение код класса, где я могу получить мой "подключ":

package com.let; 
 
import com.mysql.jdbc.Connection; 
 

 
import java.awt.EventQueue; 
 

 
import java.sql.DriverManager; 
 
import java.sql.ResultSet; 
 
import java.sql.SQLException; 
 
import java.sql.Statement; 
 
import javax.swing.JOptionPane; 
 

 

 

 

 
public class Connecting { 
 
    
 
    
 
    public final static String username="root"; 
 
    public final static String pass ="mypassword99"; 
 
    public final static String conn_str="jdbc:mysql://localhost:3306/login"; 
 
    public static Connection conn = ge_conn(); 
 
    
 
    public static Connection get_conn(){ 
 
     Connection conn=null; 
 
      
 
     try{ 
 
      conn =(Connection) DriverManager.getConnection(conn_str,username,pass); 
 
     conn =(Connection) DriverManager.getConnection(conn_str,username,pass); 
 
    }catch (SQLException e){ 
 
      System.out.println("SQL ERR!!!!"); 
 
     } 
 
    
 
     
 
     return conn; 
 
    } 
 

 
    
 
} 
 
    
 
    
 
    
 

+1

Ваше творение соединение не удается. Попробуйте распечатать трассировку стека в 'catch_conn()' catch catch 'e.printStackTrace()' и посмотрите на консоль сервера по фактической причине. –

+0

@RP вот что я вижу в журнале Tomcat: java.sql.SQLException: Не найдено подходящего драйвера для jdbc: mysql: // localhost: 3306/login – aero

+1

У меня не замечают .. Первое, что вам нужно сделать, это зарегистрироваться или загрузите драйвер. 'Class.forName (" com.mysql.jdbc.Driver ");' должна быть первой строкой в ​​вашем блоке try. Это загрузит класс драйвера в jvm, чтобы он был доступен для 'DriverManager'. –

ответ

2

В вашей записи файла класса
Изменение импорта пакета из ком. mysql.jdbc.Connection - java.sql.Connection.

createStetment() и другие методы, относящиеся к jdbc, которые вам нужны, относятся к объекту в пакете java.sql.

После некоторых комментариев, похоже, что драйвер mysql jdbc не находится в вашем пути к классам.
Вы можете скачать его здесь:
https://dev.mysql.com/downloads/connector/j/
Включите файл jar в свой путь к классам. Самый простой способ сделать это - скопировать банку в папку WEB-INF/lib.

Просто чтобы быть в безопасности, я всегда добавляю следующую строку непосредственно перед получить соединение, например, так:

Class.forName("com.mysql.jdbc.Driver").newInstance(); 
conn = DriverManager.getConnection(connectionUrl, username, password); 
+0

Такое же сообщение об ошибке, без изменений. – aero

+1

Попробуйте изменить ** ВСЕ ** импорт в java.sql.Connection в вашем проекте. Убедитесь, что нет com.mysql.jdbc.Connection ** в любом месте **. Если это все еще не работает, отправьте код, в котором вы получите свой объект Connection. –

+0

Я изменил импорт в каждом, включая соединительный файл, не работал, я разместил класс Conneting.java как обновление. – aero

 Смежные вопросы

  • Нет связанных вопросов^_^