2016-10-04 104 views
-1

我寫了jsp來處理註冊。這裏是代碼:註冊不起作用

<%@ 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> 

當我執行它,表單值不會去java。錯誤是:

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) 

這些null值從HTML表單。我該如何解決它?

+0

您正試圖插入你的數據庫表中的FIRST_NAME列空,那是因爲它是在表定義中聲明爲NOT NULL,請檢查您的列約束 – mhasan

+0

您可以添加值=「一些默認值」你的輸入標籤,然後正確驗證。這將保證從來沒有空值 – Gaur93

+0

你的形式在哪裏? – Pirate

回答

1

您應該在用戶側使用驗證。這就是說,當用戶輸入名字或姓氏時,它應該顯示一些消息,表明用戶名不能爲空。

爲此,您可以使用java腳本進行驗證。

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>

更新你這樣的HTML文件。

<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

即使我輸入值,我得到'null'值 –

+0

您必須在

標記內添加您的。否則數據將不會轉到下一頁。 – Pirate

+0

希望你明白我的觀點。 – Pirate