Итак, у меня есть сайт книжного магазина. Соответствующий код выглядит следующим образом:Сервлет не подключается к базе данных
index.jsp (у меня есть несколько блоков див, где Foo это ключевое слово для книги)
<form action="bookServlet" method="post">
<div id='foo' style="float: left; width:25%">
<img src ="${pageContext.request.contextPath}/images/foo.jpg" width ='200' height ='310' id ="foo" /> <br />
Title of a Book <br />
$7.99 <br />
<input type= 'text' name= 'foo' size = 1 />
<input type ='submit' name ='fooBtn' value ='Buy' onclick = 'this.disabled = true; return true;'/> <br /> <br />
</div>
bookServlet.java (у меня есть несколько блоки, если заявление, опять-таки один для каждой книги)
public class bookServlet extends HttpServlet {
public Statement statement;
static boolean flag[] = {false, false, false, false, false, false, false,
false, false, false, false, false, false, false, false, false};
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException, ClassNotFoundException, SQLException {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection connection = DriverManager.getConnection
("url exactly as my professor gave me", "username", "password");
System.out.print("Connected");
statement = connection.createStatement();
}
catch (Exception e){
System.out.print("Could not connect");
}
if (request.getParameter("fooBtn") != null) {
flag[0] = true;
String queryString = "select stock from Inventory where title = 'foo'";
ResultSet result = statement.executeQuery(queryString);
int quantity = Integer.parseInt(request.getParameter("foo"));
int stock = result.getInt(1);
stock -= quantity;
String insertString = "insert into Cart(title, items, price) values('foo', 1, 7.99)";
statement.executeUpdate(insertString);
String updateString = "update Inventory set stock = " + stock + " where title = 'foo'";
statement.executeUpdate(updateString);
}
}
}
когда я исполняю index.jsp, он правильно отображает, но когда я пытаюсь купить одну из книг, он не подключается к базе данных, гораздо меньше, обновите его или установите флаг в true. Я не понимаю, что я сделал неправильно.
Edit: web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<servlet>
<servlet-name>bookServlet</servlet-name>
<servlet-class>books.bookServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>checkoutServlet</servlet-name>
<servlet-class>books.checkoutServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>bookServlet</servlet-name>
<url-pattern>/bookServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>checkoutServlet</servlet-name>
<url-pattern>/checkoutServlet</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
</web-app>
Добавить 'e.printStackTrace()' к вашему блоку 'catch'. Никогда не игнорируйте исключение. –
Вы получаете выход «Не удалось подключиться»? –
У меня нет выхода. Он даже не пытается подключиться. – user2302019