How To Send A Resultset Object In Jsp Back To Html (javascript)?
I have a JSP page that queries a MySQL database, I want to send the Resultset object to an HTML page as a response object? I need the resultset object to populate a table and a cha
Solution 1:
Don't use JSP. Use a Servlet which queries the DB, obtains a List
with results and converts it to a JSON string which JS can seamlessly use.
First create a javabean class which represents a single row of the DB table. E.g. Product
.
publicclassProduct{
private Long id;
privateString name;
privateString description;
private BigDecimal price;
// Add/generate c'tors, getters, setters and other boilerplate.
}
The create a DAO class which fires the query and maps the ResultSet
to a List<Product>
.
publicclassProductDAO {
// ...public List<Product> find(String search)throws SQLException {
Connectionconnection=null;
PreparedStatementstatement=null;
ResultSetresultSet=null;
List<Product> products = newArrayList<Product>();
try {
connection = database.getConnection();
statement = connection.prepareStatement(SQL_FIND);
statement.setString(1, search);
resultSet = statement.executeQuery();
while (resultSet.next()) {
Productproduct=newProduct();
product.setId(resultSet.getLong("id"));
product.setName(resultSet.getString("name"));
product.setDescription(resultSet.getString("description"));
product.setPrice(resultSet.getBigDecimal("price"));
products.add(product);
}
} finally {
if (resultSet != null) try { resultSet.close(); } catch (SQLException logOrIgnore) {}
if (statement != null) try { statement.close(); } catch (SQLException logOrIgnore) {}
if (connection != null) try { connection.close(); } catch (SQLException logOrIgnore) {}
}
return products;
}
}
Then create a Servlet class which uses the DAO class to obtain the products and converts it to a JSON string with a little help of Google Gson.
publicclassProductServletextendsHttpServlet {
// ...protectedvoiddoGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
try {
List<Product> products = productDAO.find(request.getParameter("search"));
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(newGson().toJson(products));
} catch (SQLException e) {
thrownewServletException("DB error", e);
}
}
}
Map this servlet in web.xml
on an url-pattern
of /products
and call it in JavaScript as follows (I am using jQuery since it eliminates crossbrowsersensitive boilerplate so that you end up with 10 times less JavaScript code).
<!DOCTYPE html><htmllang="en"><head><title>SO question 4407861</title><scriptsrc="http://code.jquery.com/jquery-latest.min.js"></script><script>
$(document).ready(function() {
$('#searchform').submit(function() {
$.getJSON("products", $(this).serialize(), function(products) {
var table = $('#resulttable');
$.each(products, function(index, product) {
$('<tr>').appendTo(table)
.append($('<td>').text(product.id))
.append($('<td>').text(product.name))
.append($('<td>').text(product.description))
.append($('<td>').text(product.price));
});
});
returnfalse;
});
});
</script></head><body><formid="searchform"><inputtype="text"name="search"><inputtype="submit"></form><tableid="resulttable"></table></body></html>
Post a Comment for "How To Send A Resultset Object In Jsp Back To Html (javascript)?"