I am attempting to create a h2 table 'USERINFO' within a java servlet. This will contain a username and a password which will be user later for users to register and login to their account via the webpage.
My current runner.java is as follows:
package wpd2.lab1;
import wpd2.lab1.servlet.DemoServlet;
import wpd2.lab1.servlet.Register;
import wpd2.lab1.servlet.TestServlet;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.servlet.DefaultServlet;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import wpd2.lab1.servlet.Welcome;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Runner {
@SuppressWarnings("unused")
private static final Logger LOG = LoggerFactory.getLogger(Runner.class);
private static final int PORT = 420;
private final String shopName;
private Runner(String shopName) {
this.shopName = shopName;
}
private void start() throws Exception {
Server server = new Server(PORT);
ServletContextHandler handler = new ServletContextHandler(server, "/", ServletContextHandler.SESSIONS);
handler.setContextPath("/");
handler.setInitParameter("org.eclipse.jetty.servlet.Default." + "resourceBase", "src/main/resources/webapp");
DemoServlet demoServlet = new DemoServlet(shopName);
handler.addServlet(new ServletHolder(demoServlet), "/shop/*");
TestServlet testServlet = new TestServlet();
handler.addServlet(new ServletHolder(testServlet), "/test");
Welcome welcome = new Welcome();
handler.addServlet(new ServletHolder(testServlet), "/welcome");
Register register = new Register();
handler.addServlet(new ServletHolder(register), "/register");
DefaultServlet ds = new DefaultServlet();
handler.addServlet(new ServletHolder(ds), "/");
server.start();
LOG.info("Server started, will run until terminated");
server.join();
}
public static void main(String[] args) {
try {
Class.forName("org.h2.Driver");
try {
Connection conn =DriverManager.getConnection("jdbc:h2:~/test", "", "");
Statement st = conn.createStatement();
st.execute("CREATE TABLE USERINFO(USERNAME VARCHAR(255) PRIMARY KEY, PASSWORD VARCHAR(255))");
System.out.println("created");
} catch (SQLException e) {
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
LOG.info("starting");
new Runner("Demo Shop").start();
} catch (Exception e) {
LOG.error("Unexpected error running shop: " + e.getMessage());
}
}
}
When I run this, I can access the page but the database isn't created so when I try and register a new user I get a bunch of errors because of it.
I have also just noticed this error at the top of the logger when I run runner.java. Although the runner continues to run.
org.h2.jdbc.JdbcSQLException: Wrong user name or password [28000-194]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:345)
at org.h2.message.DbException.get(DbException.java:179)
at org.h2.message.DbException.get(DbException.java:155)
at org.h2.message.DbException.get(DbException.java:144)
at org.h2.engine.Engine.validateUserAndPassword(Engine.java:336)
at org.h2.engine.Engine.createSessionAndValidate(Engine.java:162)
at org.h2.engine.Engine.createSession(Engine.java:137)
at org.h2.engine.Engine.createSession(Engine.java:27)
at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:354)
at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:116)
at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:100)
at org.h2.Driver.connect(Driver.java:69)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
at wpd2.lab1.Runner.main(Runner.java:74)
I am really unsure what I am doing wrong and any help would be appreciated.
Aucun commentaire:
Enregistrer un commentaire