上次我们说的是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 blocke.printStackTrace();return null;}}@Override//获取到购物车中的产品信息public List<Product> getCartProducts(int proId) {try {cartBean.addProduct(proId);} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (SQLException e) {// TODO Auto-generated catch blocke.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传到网页中的数据都是从业务层获取到的。
好了,到这个地方我们大致知道了数据从数据库传递到网页的一个流程,获取对我们今后的编程,更加的规范有一定的帮助。

java-web分层2-Bean和业务层相关推荐

  1. java web分层的思想

    这几天在学java web开发,对struts,Servlet,EJB等技术那是相当的混乱,特别是baidu一下,发现网上的信息量虽大,但是杂乱无章,信息新旧程度不一,03年到11年的文章混在一起,对 ...

  2. java web服务 分层,java web分层之——三层架构

    java web分层之--3层架构 3层架构,JSP+servlet+业务逻辑层 login.jsp 质保中心 用户名: 密码: function ok(){ var username = docum ...

  3. java web分层和层间数据传递 vo bo po (转载)

    还记得97年左右开始的胖客户机和瘦客户机之争吗?之后又是CS和BS之争,然后又是两层和多层之争...,十年之后的今天我们再回过头看这些争论,一切似乎看起来都那么理所应当:程序怎么能不分层啊?可是再想一 ...

  4. java web分层和层间数据传递 vo bo po

    还记得97年左右开始的胖客户机和瘦客户机之争吗?之后又是CS和BS之争,然后又是两层和多层之争...,十年之后的今天我们再回过头看这些争论,一切似乎看起来都那么理所应当:程序怎么能不分层啊?可是再想一 ...

  5. Java Web笔记之Struts2.1 +Hibernate3.3 +Spring3.0

    2019独角兽企业重金招聘Python工程师标准>>> 1.Struts2 1.1.了解Struts2 Struts2是基于MVC设计模式的Java Web框架技术之一,按照MVC设 ...

  6. java 业务层业务接口层_Java web五层架构

    DAO层: 1.DAO层--[面向表]: 持久层.数据访问层,主要与数据库进行交互 介绍: DAO层只是封装增删改查,比较底层,比较基础的操作,具体到对于某个表.某个实体的增删改查.至于增删查改如何去 ...

  7. JDBC , 使用java来控制mysql。JavaWeb开发的分层设计-三层架:DAO层设计,连接池使用,类加载使用,配置...

    大家可以关注一下我的博客  我的博客所有随笔都是我从基础开始学习java的所有知识点 1. Jdbc概述 问题:实际开发中,不可能用工具或者命令行操作数据库,数据库表中的数据最终要使用Java程序来操 ...

  8. Java Web应用的代码分层最佳实践

    转载自 Java Web应用的代码分层最佳实践 代码分层,对于任何一个Java Web开发来说应该都不陌生.一个好的层次划分不仅可以能使代码结构更加清楚,还可以使项目分工更加明确,可读性大大提升,更加 ...

  9. Java Web应用的代码分层最佳实践。

    代码分层,对于任何一个Java Web开发来说应该都不陌生.一个好的层次划分不仅可以能使代码结构更加清楚,还可以使项目分工更加明确,可读性大大提升,更加有利于后期的维护和升级. 从另外一个角度来看,好 ...

最新文章

  1. iOS 的本地化使用和创建过程
  2. idea中链接mysql查询_在Idea中编写Java程序连接查询Sqlite数据库
  3. android模拟器越狱,关于iOS Simulator(模拟器)是否可以越狱。
  4. 55篇世界上著名博客的经验之谈
  5. 历史上的今天 - 2001年1月15日,维基百科诞生
  6. 转载:用大白话聊聊分布式系统
  7. opencv笔记(7):直方图均衡化
  8. tomcat 日志catalina.out 按天自动分割 设定时任务定时清除
  9. Netruon 理解(12):使用 Linux bridge 将 Linux network namespace 连接外网
  10. 免费CDN jsdelivr 加速网站
  11. 23位子网掩码是多少_24位子网掩码,多少个IP地址
  12. 录制计算机网课,电脑怎么录制网络课程?简单专业的录制方法分享
  13. 中秋节到了我给大家用python做一个月饼
  14. 交易系统单服务器tps,性能优化那些事之一,TPS和延时
  15. 2020下半年,最接地气的字节跳动Android面经分享(已收offer
  16. Angular常用ng指令详解
  17. python生成一笔画_python求解微信小游戏——一笔画完
  18. linux服务端 完美世界 下载,【网游单机架设】【完美世界之荣耀与新生151v101一键端】【32位+64位】【永久】...
  19. qemu模拟aarch64
  20. 非递减有序排列C语言,非递减有序顺序表的排序

热门文章

  1. Log4j格式化符号
  2. ARP协议的报文格式
  3. 组合数学实验——二分图匹配算法
  4. SQL Servr 2008空间数据应用系列六:基于SQLCRL的空间数据可编程性
  5. 中國web2.0現狀與趨勢調查報告
  6. 如何leangoo看板工具做可视化工作流
  7. 千万级流量的大型分布式系统架构设计
  8. Kubernetes 必备工具:2021
  9. 一位老哥写文怒刚 Redis 作者
  10. 几年前,我撸了一套RabbitMQ的客户端