我的Servlet只显示一个空白页面,而不是更新数据库

时间:2018-05-20 14:08:44

标签: html eclipse jsp servlets mysql-workbench

我已经使用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,表名是注册 抱歉,如果遗漏了其他任何内容,

2 个答案:

答案 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;);