我已经使用eclipse创建了一个Web应用程序,并且必须在3小时内上传它,经过几天的搜索我仍然无法理解它。我已经创建了一个用于注册的html表单,并将用户详细信息存储在数据库中(MySQL Workbench 6.3)但在注册后,servlet显示一个空白页面,我不知道我在做什么错了请帮忙,我是java和eclipse的新手。
提前感谢!
这是我的表格
<form name="signup" method="post" action="SignUpServlet">
<table id="myTable" >
<caption><h3>SIGN UP</h3></caption>
<hr>
<p text align="center">Please Fill The Below Form To Sign Up</p>
<tr>
<td>First Name</td>
<td><input type="text" placeholder="Enter First Name" name="Fname" id="Fname" required/></td>
</tr>
<tr>
<td>Last Name</td>
<td><input type="text" placeholder="Enter Last Name" name="Lname" id="Lname" required/></td>
</tr>
<tr>
<td>E-Mail</td>
<td><input type="email" placeholder="Enter Email" name="Email" id="Email" required/></td>
</tr>
<tr>
<td>User Name</td>
<td><input type="text" placeholder="User Name" name="Uname" id="Uname" required/></td>
</tr>
<tr>
<td>Enter Password</td>
<td><input type="password" placeholder="Enter Password" name="Password" id="password" onkeyup='check();' required/></td>
</tr>
<tr>
<td>Re-Enter Password To Confirm</td>
<td><input type="password" placeholder="Re-Enter Password" name="repassword" id="repassword" onkeyup='check();' required/>
<span id='message'></span></td>
</tr>
<tr>
<td>Mobile Number <i>: Optional</i></td>
<td><input type="tel" placeholder="Mobile Number" name="Mnumber" id="mnumber"/></td>
<tr>
<tr>
<td>Home Address <i>: Optional</i></td>
<td><input type="text" placeholder="Home Address" name="Haddress" id="haddress"/></td>
</tr>
<td><input type="checkbox" checked="checked" name="remember" style="margin-bottom:15px"> Remember me
<td><p>By creating an account you agree to our <a href="#" style="color:white">Terms & Policies</a>.</p>
</tr>
<tr>
<td><button type="button" onclick="document.getElementById('myTable').style.display='none'" class="cancelbtn">Cancel</button></td>
<td><input type="submit" class="signupbtn" value="Sign Up"></td>
</tr>
</table>
</form>
这是servlet。
package jdbc;
import java.sql.*;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class SignUpServlet
*/
@WebServlet("/SignUpServlet")
public class SignUpServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public SignUpServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.getWriter().println("Hellotest");
// TODO Auto-generated method stub
response.getWriter().append("Served at: ").append(request.getContextPath());
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("testing123");
try {
String Fname =request.getParameter("Fname");
String Lname =request.getParameter("Lname");
String Email =request.getParameter("Email");
String Uname =request.getParameter("Uname");
String Password =request.getParameter("Password");
String Mnumber=request.getParameter("Mnumber");
String Haddress =request.getParameter("Haddress");
String sql ="insert into sign-up(Fname,Lname,Email,Uname,Password,Mnumber,Haddress) values(?,?,?,?,?,?,?)";
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/vs&fsms","root","root");
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, Fname);
ps.setString(2, Lname);
ps.setString(3, Email);
ps.setString(4, Uname);
ps.setString(5, Password);
ps.setString(6, Mnumber);
ps.setString(7, Haddress);
ps.executeUpdate();
PrintWriter out= response.getWriter();
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/Signin.jsp");
dispatcher.forward(request, response);
} catch (ClassNotFoundException | SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
PS:SQL架构名称是vs&amp; fsms,表名是注册 抱歉,如果遗漏了其他任何内容,
答案 0 :(得分:1)
您在IDE中看到了什么错误?只需查看您的代码,我就可以说您的表名有问题。您不能在表名中使用破折号/连字符符号( - ),除非您使用反向标记(`)将其括起来。那么你正在调用catch异常块:
} catch (ClassNotFoundException | SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
因此,你的jsp永远不会运行:
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/Signin.jsp");
dispatcher.forward(request, response);
将RequestDispatcher移到try / catch块之外,然后修复表名,它应该可以正常工作。
或者在反引号中附上你的表名:
String sql ="insert into `sign-up` (Fname,Lname,Email,Uname,Password,Mnumber,Haddress) values(?,?,?,?,?,?,?)";
答案 1 :(得分:0)
使用response.sendRedirect替换调度程序(&#34; url&#34;);