Вставка записей пользователя в таблицу MYSQL

0

Я пытаюсь создать страницу регистрации для пользователей, чтобы зарегистрировать новые учетные записи. Я использую страницу signup.jsp с формой регистра, которая затем подключается к RegisterServlet.java (получает параметры формы и вставляет параметры в базу данных после подключения к DBConnection.java). DBConnection содержит попытку {} подключения к базе данных mysql.

Я пробовал несколько способов регистрации пользователя, но информация о пользователях никогда не вставляется в базу данных.

signup.jsp:

<form action="RegisterServlet" method="post" onsubmit="return validate()">
                                        <div class="row">
                                            <div class="col-lg-6 col-md-6">
                                                <input type="text" placeholder="First Name" name="fname" class="form-control" />
                                            </div>
                                            <div class="col-lg-6 col-md-6">
                                                <input type="text" placeholder="Last Name" name="lname" class="form-control" />
                                            </div>
                                        </div>
                                        <div>
                                            <input type="text" placeholder="User Name" name="username" class="form-control" />
                                        </div>
                                        <div class="row">
                                            <div class="col-lg-6 col-md-6">
                                                <input type="password" placeholder="Password" name="password" class="form-control" id="pass" name="pass" />
                                            </div>
                                            <div class="col-lg-6 col-md-6">
                                                <input type="password" placeholder="Retype Password" name="confirm_password" class="form-control" id="pass2" name="pass2" />
                                            </div>
                                            <div class="col-lg-6 col-md-6">
                                                <%=(request.getAttribute("errMessage") == null) ? ""
                                                : request.getAttribute("errMessage")%>
                                            </div>
                                        </div>
                                        <div class="pull-left"><button type="submit" class="btn btn-primary">Sign Up</button></div>
                                     </form>

RegisterServlet.java:

@WebServlet("/RegisterServlet")
public class RegisterServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    public RegisterServlet() {
        super();
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.sendRedirect("login.jsp");
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     try
        {
        String fname = request.getParameter("fname");
        String lname = request.getParameter("lname");
        String username = request.getParameter("username");
        String password = request.getParameter("password");

        DBConnection db = new DBConnection();
        Connection con = db.getCon();


            Statement stmt = con.createStatement();
            stmt.executeUpdate("insert into user (fname, lname, username, password)values('"+fname+"','"+lname+"','"+username+"','"+password+"')");
            System.out.println("data inserted sucessfully");
            response.sendRedirect("login.jsp");
        } catch (SQLException e)
        {
            e.printStackTrace();
        }       


    }

}

DBConnection.java


public class DBConnection {

    public Connection con;

    public Connection getCon(){
        try {
        Class.forName("com.mysql.jdbc.Driver");
        con =  DriverManager.getConnection("jdbc:mysql://localhost:3306/cultureexchange", "root", "");
        } catch (ClassNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        }
        return con;
        }
}

Таблица пользователей Sql:

fname    lname    username    password
varchar  varchar  varchar     varchar

Мой login.jsp работает, поэтому подключение к базе данных должно работать, заранее благодарен за помощь.

  • 3
    Исправьте SQL-инъекцию. Не храните пароли в виде простого текста. После исправления, какой веб-ответ вы получаете? Какое исключение вы получаете? Или журнал ошибок?
  • 0
    попробуйте добавить commit
Показать ещё 3 комментария
Теги:
jsp
servlets

1 ответ

0

попробуйте изменить эти строки

 Statement stmt = con.createStatement();
            stmt.executeUpdate("insert into user (fname, lname, username, password)values('"+fname+"','"+lname+"','"+username+"','"+password+"')");

в

 PreparedStatement stmt = con.prepareStatement("insert into user (fname, lname, username, password)values(?,?,?,?)");
            ps.setString(1, fname);
            ps.setString(2, lname);
            ps.setString(3, username);
            ps.setString(4, password);
            ps.executeUpdate();

И убедитесь, что у вас есть mysql-j -nector в вашей папке lib под WEB-INF.

  • 0
    Следовал этому руководству по добавлению mysql-j-connector: science.smith.edu/dftwiki/index.php/… и отредактировал подготовленное заявление, как вы объяснили, но все же, когда я нажимаю "зарегистрировать", страница просто обновляется, и никакая информация о пользователе не помещается в базу данных. ..
  • 0
    @james Вы получаете какую-либо ошибку?
Показать ещё 18 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню