-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表單。我該如何解決它?
您正試圖插入你的數據庫表中的FIRST_NAME列空,那是因爲它是在表定義中聲明爲NOT NULL,請檢查您的列約束 – mhasan
您可以添加值=「一些默認值」你的輸入標籤,然後正確驗證。這將保證從來沒有空值 – Gaur93
你的形式在哪裏? – Pirate