java-web分层2-Bean和业务层

原创 2017年01月02日 21:43:53

上次我们说的是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传到网页中的数据都是从业务层获取到的。
好了,到这个地方我们大致知道了数据从数据库传递到网页的一个流程,获取对我们今后的编程,更加的规范有一定的帮助。




Action层, Service层 ,modle层 和 Dao层的功能区分

来源:http://www.xuebuyuan.com/2153333.html Action主要的功能就是组织service的,比如你要做权限验证,那么请求会被Action获取,那么如何验证呢...

标准Web系统的架构分层

标准Web系统的架构分层 标准Web系统架构适用于传统的基于WEB浏览器/手机端的CRM系统、ERP系统、SaaS系统、O2O系统、商城系统、物流系统。架构的灵活性和业务适应性决定了不同的系统根据业...

JAVA中Action层, Service层 ,modle层 和 Dao层的功能区分

首先这是现在最基本的分层方式,结合了SSH架构。modle层就是对应的数据库表的实体类。Dao层是使用了Hibernate连接数据库、操作数据库(增删改查)。Service层:引用对应的Dao数据库操...
  • limuzi13
  • limuzi13
  • 2015年04月10日 00:47
  • 44237

JAVA三层架构,持久层,业务层,表现层的理解

SSH:Struts(表示层 )+Spring(业务层)+Hibernate(持久层)Struts: Struts是一个表示层框架,主要作用是界面展示,接收请求,分发请求。在 MVC框架 中,...

手把手教你编写一个具有基本功能的shell(已开源)

本文一步一步地教你如何编写一个具有基本功能的shell,特点是由简单到复杂,逐步添加新的特性,注重思路的展示而不是代码的堆砌,因而不会直接呈现一个完善的版本;同时练习相关的Linux的API,有助于破...

1分钟学会用java发送邮件

今天教大家如何通过java发送邮件,十分的简单易懂,而且能够马上上手。 首先,教大家的方法底层依赖的是javamail,需要的jar包是mail.jar、activation.jar。jar包我会放在...

Java Web bean.jar

  • 2012年02月20日 22:22
  • 481B
  • 下载

Activiti-5.18.0与springMvc项目集成和activiti-explorer单独部署Web项目并与业务数据库关联方法(AutoEE_V2实现方式)

Activiti-5.18.0与springMvc项目集成和activiti-explorer单独部署Web项目并与业务数据库关联方法,实现简单快速涉及部署工作流,工作流设计工程和业务工程分离,分别部...

WEB启动时,如何加载spring容器和struts2容器(bean的注入和url如何请求)

整合原理整合原理: * web.xml * spring容器是以监听器的形式与tomcat整合的 org.springfr...
  • wsl9420
  • wsl9420
  • 2016年11月26日 12:08
  • 552
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java-web分层2-Bean和业务层
举报原因:
原因补充:

(最多只允许输入30个字)