2016-10-04 2 views
-1

Ich schrieb JSP zur Registrierung. Hier ist der Code:Registrierung funktioniert nicht

<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%> 
<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%> 
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 
<%@ page import="java.util.*, java.io.*, java.sql.*"%> 
<%@ page import="javax.servlet.*, javax.servlet.http.*"%> 
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 
<% 

    String fname = request.getParameter("fname"); 
    System.out.println(fname); 
    String lname = request.getParameter("lname"); 
    System.out.println(lname); 
    String uname = request.getParameter("uname"); 
    System.out.println(uname); 
    String email = request.getParameter("email"); 
    String password = request.getParameter("password"); 

    Class.forName("com.mysql.jdbc.Driver"); 
    Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/logindb", "root", 
      "***"); 
    Statement statement = connection.createStatement(); 

    PreparedStatement preparedStatement = connection.prepareStatement("insert into members(first_name, last_name, email, uname, pass, regdate) values (?,?,?,?,?, CURDATE())"); 
    try { 
     preparedStatement.setString(1, fname); 
     preparedStatement.setString(2, lname); 
     preparedStatement.setString(3, uname); 
     preparedStatement.setString(4, email); 
     preparedStatement.setString(5, password); 
     preparedStatement.execute(); 
     connection.close(); 
     out.println("registration successful, click here to " + "<a href='login.do'>login</a>"); 
    } catch(SQLException e) { 
     e.printStackTrace(); 
     e.getMessage(); 
    } 
    /* if(preparedStatement != null) { 
     out.println("Registration successful, go to" + "<a href='login.do'> login</a>"); 
    } else { 
     out.println("Registration is unsuccessful!"); 
    } */ 
    /* if (i>0) { 
     response.sendRedirect("welcome.do"); 
    } */ 
%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Registration</title> 
</head> 
<body> 

    <table> 
     <tr> 
      <td><label for="fname">First name</label></td> 
      <td><input type="text" name="fname"></td> 
     </tr> 
     <tr> 
      <td><label for="lname">Last name</label></td> 
      <td><input type="text" name="lname"></td> 
     </tr> 
     <tr> 
      <td><label for="uname">User name</label></td> 
      <td><input type="text" name="uname"></td> 
     </tr> 
     <tr> 
      <td><label for="email">Email id</label></td> 
      <td><input type="text" name="email"></td> 
     </tr> 
     <tr> 
      <td><label for="password">Password</label></td> 
      <td><input type="text" name="password"></td> 
     </tr> 
     <tr> 
      <td> 
       <center> 
        <td><input type="submit" name="reg" value="Register"></td> 
       </center> 
      </td> 
     </tr> 
     <tr> 
      <td> 
       <center> 
        <td><a href="login.do">Back to login</a></td> 
       </center> 
      </td> 
     </tr> 
    </table> 
</body> 
</html> 

Wenn ich es ausgeführt habe, gehen die Formularwerte nicht nach Java. Fehler:

null 
null 
null 
java.sql.SQLException: Column 'first_name' cannot be null 
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2847) 
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1531) 
    at com.mysql.jdbc.ServerPreparedStatement.serverExecute(ServerPreparedStatement.java:1347) 
    at com.mysql.jdbc.ServerPreparedStatement.executeInternal(ServerPreparedStatement.java:958) 
    at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1494) 
    at org.apache.jsp.WEB_002dINF.reg_jsp._jspService(reg_jsp.java:155) 
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:438) 
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396) 
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:217) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:673) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    at java.lang.Thread.run(Thread.java:745) 

Diejenigen null Werte von HTML-Formular sind. Wie kann ich es reparieren?

+0

Sie versuchen null in first_name Spalte Ihrer db-Tabelle einzufügen, ist es, weil sie als nicht null in Tabellendefinition deklariert wird, überprüfen Sie die Spaltenbedingungen – mhasan

+0

Sie value = „einige Standardwert“ add in Ihre Eingabe-Tags und dann richtig validieren.Dies wird garantieren, dass es nie einen Null-Wert gibt – Gaur93

+0

wo ist Ihre Form ??? – Pirate

Antwort

1

Sie sollten die Validierung auf der Benutzerseite verwenden. Das heißt, wenn ein Benutzer den Namen oder Nachnamen nicht eingibt, sollte er eine Nachricht anzeigen, dass der Benutzername nicht leer sein darf.

Dafür können Sie Java-Skript zur Validierung verwenden.

function validation(){ 
 
var a=document.getElementById("name"); 
 
    if (a.value==""){ 
 
    alert("Name can't be empty"); 
 
    return false 
 
    } 
 
    else 
 
    return true; 
 
}
<html> 
 
    <body> 
 
    <form name="vali" onsubmit="return validation()" action="https://www.google.com"> 
 
    <input type="text" name="text" id="name"> 
 
    <input type="submit" value="Submit"> 
 
    </form> 
 
    </body> 
 
</html>

Aktualisieren Sie Ihre HTML-Datei wie diese.

<body> 
<form name="" action=""> 
    <table> 
     <tr> 
      <td><label for="fname">First name</label></td> 
      <td><input type="text" name="fname"></td> 
     </tr> 
     <tr> 
      <td><label for="lname">Last name</label></td> 
      <td><input type="text" name="lname"></td> 
     </tr> 
     <tr> 
      <td><label for="uname">User name</label></td> 
      <td><input type="text" name="uname"></td> 
     </tr> 
     <tr> 
      <td><label for="email">Email id</label></td> 
      <td><input type="text" name="email"></td> 
     </tr> 
     <tr> 
      <td><label for="password">Password</label></td> 
      <td><input type="text" name="password"></td> 
     </tr> 
     <tr> 
      <td> 
       <center> 
        <td><input type="submit" name="reg" value="Register"></td> 
       </center> 
      </td> 
     </tr> 
     <tr> 
      <td> 
       <center> 
        <td><a href="login.do">Back to login</a></td> 
       </center> 
      </td> 
     </tr> 
    </table> 
</form> 
</body> 
+0

Selbst wenn ich Werte eingib, bekomme ich 'null' Werte –

+0

Sie müssen Ihre

innerhalb Tag hinzufügen. Andernfalls werden die Daten nicht zur nächsten Seite weitergeleitet. – Pirate

+0

Hoffen Sie, dass Sie meinen Standpunkt verstehen. – Pirate

Verwandte Themen