上次我们说的是Dao层,那么这次我们来看javaBean层和业务层要实现怎样的功能,之前说的是dao层的任务是和数据库进行交换,可以在某个具体的实体类的DaoImpl对数据进行操作,比如说我们某一个数据表里面取到数据了,那么现在我们是之间发送到前台,还是还要经过其他的层,我们来看javaBean一些类实现那些操作,

javaBean类主要放在com.XXX.domain下面:我们来看CartBean类

package com.cart.domain;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.cart.dao.ProductDao;
import com.cart.dao.impl.ProductDaoImpl;
public class CartBean {
//定义集合来表示处理逻辑的类
private List<Product> products=new ArrayList<Product>();
public CartBean(List<Product> products) {
super();
this.products = products;
}
public CartBean() {
super();
// TODO Auto-generated constructor stub
}
public List<Product> getProducts() {
return products;
}

public void setProducts(List<Product> products) {
this.products = products;
}
//添加商品到购物车的方法
public void addProduct(int proId) throws ClassNotFoundException, SQLException
{
ProductDao proDao=new ProductDaoImpl();
Product product=proDao.isExist(proId);
boolean isExist=false;
if(null!=product)
{
//遍历购物车当前的记录,如果能找到一个id为ProId 的
//将该产品的orderNum+1
//如果没有就新增一个记录
for(int i=0;i<products.size();i++)
{
Product temp=products.get(i);
if(product.getId()==temp.getId())
{
isExist=true;
temp.setOrderNum(temp.getOrderNum()+1);
}
}
}
if(!isExist)
{
//加入购物车
products.add(product);
}
}
}
这个层是一个过渡层,我们不知道业务层需要什么样子的数据,所以这一层是从dao层中获取到数据然后提供给服务层,我们Bean这一层获取数据并不是直接的从数据库中获取到,而是调用到层数据的一些方法,我们可以为某一个实体类都设置一个Bean类,这个需要的之后实体类需要的数据我们就可以从Bean层获取到了
ProductBean类
package com.cart.domain;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.cart.dao.ProductDao;
import com.cart.dao.impl.ProductDaoImpl;

public class ProductBean {
//凡是使用设计请求数据库中的数据操作都要使用Dao相关的实现资源
private ProductDao proDao=new ProductDaoImpl();
private List<Product> products=new ArrayList<>();
//对应的get和set方法
public List<Product> getProducts(){
return products;
}
public void setProducts(List<Product> products)
{
this.products=products;
}
public ProductBean() {
super();
// TODO Auto-generated constructor stub
}
//获取所有的产品的信息的集合
public List<Product> getAllProInfo() throws ClassNotFoundException, SQLException
{
products=proDao.quryAllProduct();
return products;

}

我们要理解Bean层那就要和其他的层进行结合:我们来看业务层:


package com.cart.biz;

import java.util.List;

import com.cart.domain.Product;

//业务层
public interface ProductService {
public List<Product> getAllProducts();
public List<Product> getCartProducts(int proId);
}

业务层是获取到所有的商品和获取到购物车中的商品,我们看这个接口的实现:可以看到业务层的数据都是在Bean里面获取,而且Bean还有一种任务是从数据库获取数据等等有很多的异常还没有进行处理我们就在这一层进行处理

业务层是从Bean中获取到数据然后给Servlet,Servlet传递数据到网页。

package com.cart.biz.impl;

import java.sql.SQLException;
import java.util.List;
import java.util.logging.Logger;

import com.cart.biz.ProductService;
import com.cart.domain.CartBean;
import com.cart.domain.Product;
import com.cart.domain.ProductBean;

public class ProductServiceImpl implements ProductService {
ProductBean proBean=new ProductBean();
//获取到购物车的信息
CartBean cartBean=new CartBean();
//获取所有的 产品
@Override
//获取所有的产品的信息
public List<Product> getAllProducts() {
System.out.println("获取所有的产品的信息");
try {
return proBean.getAllProInfo();
} catch (ClassNotFoundException e) {
System.out.println("获取所有产品的信息的时候出现了异常");
e.printStackTrace();
return null;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}

@Override
//获取到购物车中的产品信息
public List<Product> getCartProducts(int proId) {
try {
cartBean.addProduct(proId);

} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return cartBean.getProducts();
}
}

我们来看servlet是从网页获取:


package com.cart.biz.web.servlet;

import java.io.IOException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.cart.biz.ProductService;
import com.cart.biz.impl.ProductServiceImpl;
import com.cart.domain.Product;

/**
* Servlet implementation class ProductServlet
*/
@WebServlet("/ProductServlet")
public class ProductServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
ProductService proService=new ProductServiceImpl();
public ProductServlet() {
super();
}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

response.getWriter().append("Served at: ").append(request.getContextPath());
doPost(request, response);

}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取当前产品的列表
List<Product> products=proService.getAllProducts();
for(int i=0;i<products.size();i++)
{
Product pro=products.get(i);
System.out.println(pro.getId()+","+pro.getName()+","+pro.getOrderNum());
}


}

}
:ProductService proService=new ProductServiceImpl();可以看出servlet传到网页中的数据都是从业务层获取到的。
好了,到这个地方我们大致知道了数据从数据库传递到网页的一个流程,获取对我们今后的编程,更加的规范有一定的帮助。