Java 向Web应用程序添加服务层以在jsp上显示DB内容
A产品DAO:Java 向Web应用程序添加服务层以在jsp上显示DB内容,java,mysql,jsp,spring-mvc,servlets,Java,Mysql,Jsp,Spring Mvc,Servlets,A产品DAO: 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;
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 List()引发SQLException{
连接=空;
PreparedStatement=null;
ResultSet ResultSet=null;
列表产品=新的ArrayList();
试一试{
connection=database.getConnection();
语句=connection.prepareStatement(“从产品中选择id、名称、描述、价格”);
resultSet=statement.executeQuery();
while(resultSet.next()){
产品=新产品();
product.setId(resultSet.getLong(“id”);
product.setName(resultSet.getString(“name”);
product.setDescription(resultSet.getString(“description”);
product.setPrice(resultSet.getBigDecimal(“价格”));
产品。添加(产品);
}
}最后{
如果(resultSet!=null),请尝试{resultSet.close();}catch(SQLException ignore){}
如果(statement!=null),请尝试{statement.close();}catch(SQLException ignore){}
如果(connection!=null),请尝试{connection.close();}catch(SQLException ignore){}
}
退货产品;
}
}
要获取列表,请执行以下操作:
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;
}
}
受保护的void doGet(HttpServletRequest请求,HttpServletResponse响应)抛出ServletException,IOException{
试一试{
List products=productDAO.List();
request.setAttribute(“products”,products);//将作为${products}在JSP中提供
request.getRequestDispatcher(“/WEB-INF/products.jsp”).forward(请求,响应);
}捕获(SQLE异常){
抛出新的ServletException(“无法从DB获得产品”,e);
}
}
最后是jsp:
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);
}
}
...
${product.name}
${product.description}
${product.price}
伙计们,我从Stackoverflow自己那里得到了这个代码。。。。这和我正在做的项目很相似。。。我只是想知道,如果我想添加服务层到这个应用程序我必须做什么改变。。。我尝试将列表放入另一个方法中,但它出现了一些错误。。。所以请有人在这方面指导我。。。。从servlet到服务,最后从服务到DAO,应该有一个方法。请指导我….您必须创建一个新的服务类,如下所示:
<%@ 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>
public class ProductService {
ProductDAO productDAO = new ProductDAO();
public List<Product> list() throws SQLException{
return productDAO.list();
}
}
然后修改doGet以使用服务而不是DAO:
ProductService productService = new ProductService();
受保护的void doGet(HttpServletRequest请求,HttpServletResponse响应)抛出ServletException,IOException{
试一试{
List products=productService.List();
request.setAttribute(“products”,products);//将作为${products}在JSP中提供
request.getRequestDispatcher(“/WEB-INF/products.jsp”).forward(请求,响应);
}捕获(SQLE异常){
抛出新的ServletException(“无法从DB获得产品”,e);
}
}
这是一个让您开始学习的示例。您应该将SQLException处理移到服务类而不是servlet。非常感谢您的回答。。。。。我就是这样做的,而且成功了。。。。谢谢你的指导。。。。。
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);
}
}