A Product class representing a real world entity of a product, it should be just a Javabean.
public class Product {
private Long id;
private String name;
private String description;
private BigDecimal price;
// Add/generate getters/setters/c'tors/equals/hashcode boilerplate.
}
ProductDAO:
public class ProductDAO {
public List<Product> list() throws SQLException {
Connection connection = null;
PreparedStatement statement = null;
ResultSet resultSet = null;
List<Product> products = new ArrayList<Product>();
try {
connection = database.getConnection();
statement = connection.prepareStatement("SELECT id, name, description, price FROM product");
resultSet = statement.executeQuery();
while (resultSet.next()) {
Product product = new Product();
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 ignore) {}
if (statement != null) try { statement.close(); } catch (SQLException ignore) {}
if (connection != null) try { connection.close(); } catch (SQLException ignore) {}
}
return products;
}
}
获取列表的Servlet:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
List<Product> products = productDAO.list();
request.setAttribute("products", products); // Will be available as ${products} in JSP
request.getRequestDispatcher("/WEB-INF/products.jsp").forward(request, response);
} catch (SQLException e) {
throw new ServletException("Cannot obtain products from DB", e);
}
}
最后是jsp:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
...
<table>
<c:forEach items="${products}" var="product">
<tr>
<td>${product.name}</td>
<td>${product.description}</td>
<td>${product.price}</td>
</tr>
</c:forEach>
</table>
伙计们,我从 Stackoverflow 本身获得了这段代码...它与我正在开发的项目类似...我只是想知道我是否想向此应用程序添加服务层我必须做哪些更改...我尝试将列表放入另一个方法中,但它给出了一些错误...所以请有人指导我...应该有一种从 servlet 到服务,然后从服务最终到 DAO 的方法。请指导我......
最佳答案
您必须创建一个新的服务类,如下所示:
public class ProductService {
ProductDAO productDAO = new ProductDAO();
public List<Product> list() throws SQLException{
return productDAO.list();
}
}
将服务实例添加到您的 servlet 中以代替 DAO 实例:
ProductService productService = new ProductService();
然后修改你的 doGet 以使用服务而不是 DAO:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
List<Product> products = productService.list();
request.setAttribute("products", products); // Will be available as ${products} in JSP
request.getRequestDispatcher("/WEB-INF/products.jsp").forward(request, response);
} catch (SQLException e) {
throw new ServletException("Cannot obtain products from DB", e);
}
}
这是一个帮助您入门的示例。您应该将 SQLException 处理移至服务类而不是 servlet。
关于java - Web APP中添加Service层,在jsp上显示DB内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21778163/