За 5 часов я пытался решить эту проблему и не yeiled никакого результата, я получаю сообщение об ошибке при нажатии Submit, это предположить, чтобы записать информацию в полей в SQL, но это не делает: JSP/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;
}
}
Ваше творение соединение не удается. Попробуйте распечатать трассировку стека в 'catch_conn()' catch catch 'e.printStackTrace()' и посмотрите на консоль сервера по фактической причине. –
@RP вот что я вижу в журнале Tomcat: java.sql.SQLException: Не найдено подходящего драйвера для jdbc: mysql: // localhost: 3306/login – aero
У меня не замечают .. Первое, что вам нужно сделать, это зарегистрироваться или загрузите драйвер. 'Class.forName (" com.mysql.jdbc.Driver ");' должна быть первой строкой в вашем блоке try. Это загрузит класс драйвера в jvm, чтобы он был доступен для 'DriverManager'. –