%@ page import="java.sql.*" %>
<%@ page import="java.util.HashMap" %>
<%!
HashMap products = new HashMap(50);
public void jspInit() {
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection("jdbc:odbc:JavaWeb");
Statement s = con.createStatement();
String sql = "SELECT ProductId, ProductName, Description, Price" +
" FROM Products" +
" WHERE Hot=True";
ResultSet rs = s.executeQuery(sql);
while (rs.next()) {
Product product = new Product();
String productId = rs.getString("ProductId");
product.productId = productId;
product.productName = rs.getString("ProductName");
product.description = rs.getString("Description");
product.price = rs.getFloat("Price");
products.put(productId, product);
}
con.close();
}
catch (ClassNotFoundException e) {
}
catch (Exception e) {
}
}
class Product {
String productId;
String productName;
String description;
float price;
}
%>
<%
long t1 = System.currentTimeMillis();
%>
Product Details
<%
String productId = request.getParameter("id");
//productId="2";
if (productId==null) {
out.println("The request did not carry a product identifier");
return;
}
String productName = null;
String description = null;
float price = 0;
Product product = (Product) products.get(productId);
if (product!=null) {
productName = product.productName;
description = product.description;
price = product.price;
}
else {
// not found in the cache, grab from the database
try {
Connection con = DriverManager.getConnection("jdbc:odbc:JavaWeb");
Statement s = con.createStatement();
String sql = "SELECT ProductName, Description, Price" +
" FROM Products" +
" WHERE ProductId=" + productId;
ResultSet rs = s.executeQuery(sql);
if (rs.next()) {
productName = rs.getString("ProductName");
description = rs.getString("Description");
price = rs.getFloat("Price");
}
rs.close();
s.close();
con.close();
}
catch (SQLException e) {
out.println(e.toString());
}
catch (Exception e) {
out.println(e.toString());
}
}
%>
Product Id: <%=productId%>
Product Name: <%=productName%>
Description: <%=description%>
Price: <%=price%>
<%
long t2 = System.currentTimeMillis();
out.println("Processing time: " + (t2 - t1));
%>