Я не могу сделать раздел регистрации в моем проекте Jsp. Я получаю сообщение об ошибке «Столбец« USER_NAME »не может быть пустым». В коде много кода, я сожалею об этом, но сам не смог решить проблему. Не знаю, в чем проблема - в базе данных или в коде.
Я бы попробовал:
Я переустановил Tomcat.
Я создал новую базу данных,
но опять та же ошибка.
Схема базы данных Mysql:
books_db
-------------> book
-------------> user_account
------> user_name, pk
------> password
------> gender
DButils.java
public static void register(Connection conn, UserAccount user) throws SQLException {
String sql = "Insert into User_account(user_name, password,gender) values (?,?,?)";
PreparedStatement pstm = conn.prepareStatement(sql);
pstm.setString(1, user.getUserName());
pstm.setString(2, user.getPassword());
pstm.setString(3, user.getGender());
pstm.executeUpdate();
}
RegisterServlet.java
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Connection conn = MyUtils.getStoredConnection(request);
String userName = (String) request.getParameter("userName");
String password = (String) request.getParameter("password");
String gender = (String) request.getParameter("gender");
UserAccount userreg = new UserAccount(userName, password, gender);
String errorString = null;
if (errorString == null) {
try {
DBUtils.register(conn, userreg);
} catch (SQLException e) {
e.printStackTrace();
errorString = e.getMessage();
}
}
request.setAttribute("errorString", errorString);
request.setAttribute("userreg", userreg);
if (errorString != null) {
RequestDispatcher dispatcher = request.getServletContext()
.getRequestDispatcher("/WEB-INF/views/registerView.jsp");
dispatcher.forward(request, response);
}
else {
response.sendRedirect(request.getContextPath() + "/register");
}
RegisterView.jsp
<form method="POST" action="${pageContext.request.contextPath}/register">
<table border="0">
<tr>
<td>User Name</td>
<td><input type="text" name="userName" value="${userreg.userName}" /></td>
</tr>
<tr>
<td>Password</td>
<td><input type="text" name="password" value="${userreg.password}" /></td>
</tr>
<tr>
<td>Gender</td>
<td><input type="text" name="gender" value="${userreg.gender}" /></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="Submit" />
<a href="register">Cancel</a>
UserAccount.java
public static final String GENDER_MALE ="M";
public static final String GENDER_FEMALE = "F";
private String userName;
private String gender;
private String password;
public UserAccount(String userName, String password, String gender) {
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
.
.
.