package example;
import java.io.PrintWriter;
import java.io.IOException;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.sql.DataSource;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.inject.Named;
import javax.inject.Inject;
/**
* The BasicServlet executes a simple JDBC query.
*
* The DataSource saved on initialization to save the JNDI lookup
* time.
*/
public class BasicServlet extends HttpServlet {
/**
* The saved DataSource for the database
*/
@Inject @Named("jdbc/basic")
private DataSource _ds;
/**
* Respond to a request by doing a query and returning the results.
*/
public void service(HttpServletRequest req, HttpServletResponse res)
throws java.io.IOException, ServletException
{
res.setContentType("text/html");
PrintWriter out = res.getWriter();
try {
doQuery(out);
} catch (SQLException e) {
throw new ServletException(e);
}
}
/**
* Typical pattern for database use.
*/
public void doQuery(PrintWriter out)
throws IOException, SQLException
{
Connection conn = _ds.getConnection();
try {
String sql = "SELECT name, cost FROM jdbc_basic_brooms ORDER BY cost DESC";
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
out.println("<table border='3'>");
while (rs.next()) {
out.println("<tr><td>" + rs.getString(1));
out.println(" <td>" + rs.getString(2));
}
out.println("</table>");
rs.close();
stmt.close();
} finally {
conn.close();
}
}
}