Я заставляю своего пользователя входить и выходить из системы всякий раз, когда я регистрируюсь, это выдает ошибку.
Список проблем:
INFO [stdout] (задание по умолчанию 6) org.h2.jdbc.JdbcSQLException: таблица «USER» не найдена;
Оператор SQL:
stdout] (задание по умолчанию-6) INSERT INTO user (имя, пароль, фамилия, адрес электронной почты) VALUES (?,?,?,?) [42102-173]
ОШИБКА [stderr] (задание по умолчанию-6) java.lang.NullPointerException
ОШИБКА [stderr] (задание по умолчанию-6) на com.ark.beans.User.add (User.java:113)
ОШИБКА [stderr] (задание по умолчанию-6) в sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод)
ОШИБКА [stderr] (задание по умолчанию-6) в sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
Я проверил каждое имя и соединение, но у меня не работает
Это мой класс пользователя
public User() {
try {
Context ctx = new InitialContext();
ds = (DataSource) ctx.lookup("java:comp/env/jdbc/database");
} catch (NamingException e) {
e.printStackTrace();
}
}
public String add() {
int i = 0;
if (firstName != null) {
PreparedStatement ps = null;
Connection con = null;
try {
if (ds != null) {
con = ds.getConnection();
if (con != null) {
String sql = "INSERT INTO user(firstname, password, lastname, email) VALUES(?,?,?,?)";
ps = con.prepareStatement(sql);
ps.setString(1, firstName);
ps.setString(2, password);
ps.setString(3, lastName);
ps.setString(4, email);
i = ps.executeUpdate();
System.out.println("Data Added Successfully");
}
}
} catch (Exception e) {
System.out.println(e);
} finally {
try {
con.close();
ps.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
if (i > 0) {
return "success";
} else
return "unsuccess";
}
public void dbData(String uName) {
if (uName != null) {
PreparedStatement ps = null;
Connection con = null;
ResultSet rs = null;
if (ds != null) {
try {
con = ds.getConnection();
if (con != null) {
String sql = "select firstname,password from user where firstname = '"
+ uName + "'";
ps = con.prepareStatement(sql);
rs = ps.executeQuery();
rs.next();
dbName = rs.getString("firstname");
dbPassword = rs.getString("password");
}
} catch (SQLException sqle) {
sqle.printStackTrace();
}
}
}
}
public String login() {
dbData(firstName);
if (firstName.equals(dbName) && password.equals(dbPassword)) {
return "output";
} else
return "invalid";
}
public void logout() {
FacesContext.getCurrentInstance().getExternalContext();
FacesContext.getCurrentInstance()
.getApplication().getNavigationHandler()
.handleNavigation(FacesContext.getCurrentInstance(), null, "/login.xhtml");
}
}
Это context.xml
<Resource name="jdbc/database" auth="Container" type="javax.sql.DataSource"
username="root" password="password" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/appdb" />
Форма для входа в систему
<h:form id="registerForm">
<table>
<tr>
<td><h:outputText value="Enter Your First Name:" /></td>
<td><h:inputText id="fname" value="#{user.firstName}"
required="true" requiredMessage="Please enter your first name" /></td>
<td><h:message for="fname" style="color:red" /></td>
</tr>
<tr>
<td><h:outputText value="Enter Your Last Name:" /></td>
<td><h:inputText id="lname" value="#{user.lastName}"
required="true" requiredMessage="Please enter your last name" /></td>
<td><h:message for="lname" style="color:red" /></td>
</tr>
<tr>
<td><h:outputText value="Enter Your email ID:" /></td>
<td><h:inputText id="email" value="#{user.email}"
required="true" requiredMessage="Please enter your email id" /></td>
<td><h:message for="email" style="color:red" /></td>
</tr>
<tr>
<td><h:outputText value="Enter Password :" /></td>
<td><h:inputSecret id="psw" value="#{user.password}"
required="true" requiredMessage="Please enter your password" /></td>
<td><h:message for="psw" style="color:red" /></td>
</tr>
<tr>
<td />
<td><h:commandButton value="Register" action="#{user.add}" /></td>
</tr>
<tr>
<td><h:outputLink value="home.xhtml">Home</h:outputLink></td>
</tr>
</table>
</h:form>