1. 程式人生 > >java-web分層2-Bean和業務層

java-web分層2-Bean和業務層

上次我們說的是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傳到網頁中的資料都是從業務層獲取到的。
好了,到這個地方我們大致知道了資料從資料庫傳遞到網頁的一個流程,獲取對我們今後的程式設計,更加的規範有一定的幫助。


相關推薦

java-web分層2-Bean業務

上次我們說的是Dao層,那麼這次我們來看javaBean層和業務層要實現怎樣的功能,之前說的是dao層的任務是和資料庫進行交換,可以在某個具體的實體類的DaoImpl對資料進行操作,比如說我們某一個數據表裡面取到資料了,那麼現在我們是之間傳送到前臺,還是還要經過其他的層,我

JAVA web分層思想及maven web專案[持久 (spring jdbc)業務(spring)表現(jsp)](探索中)(swb)

安裝過程如下 sudo apt-get install mysql-server 安裝過程中隨後設定mysql的密碼 之後sudo apt-get install mysql-client 安裝好之後使用終端進入mysql控制檯 sudo apt-get install mys

[Java][Web]Request 實現轉發 MVC 設計模式

寫入 頁面 str quest 表示 請求轉發 但是 write att String data = "aaaaa"; request.setAttribute("data",data); // 將數據存在 request request.getRequestDispat

java web基礎學習 ForwardRedirect區別

響應 對象 一次 servlet t對象 資源 http 發的 請求 Forward和Redirect代表了兩種請求轉發方式:直接轉發和間接轉發。對應到代碼裏,分別是RequestDispatcher類的forward()方法和HttpServletRequest類的sen

JAVA Web基礎2-JSP九大內置對象

上下文 inf AD 應對 版本號 提交 contex har post 在jsp開發中會頻繁使用到一些對象,如ServletContext HttpSession PageContext等.如果每次我們在jsp頁面中需要使用這些對象都要自己親自動手創建就會特別的繁瑣.SU

[Java Web] Struts 2

nds actions pattern htm 截器 相關配置 視圖 動態方法調用 協助 一、簡述 MVC全名Model View Controller,是一種將業務邏輯、數據和界面顯示分離的方法。 Struts是一個基於MVC模式設計的Web應用框架,其各層結構功能如下:

java web項目中後臺控制對參數進行自定義驗證 類 Pattern

span 快捷方式 pattern 例如 att ice 模式 匹配 ret Pattern pattern = Pattern.compile("/^([1-9]\\d+元*|[0]{0,1})$/");//將給定的正則表達式編譯到模式中 if(!"".equals

java web---會話機制cookiesession

轉載:https://www.cnblogs.com/whgk/p/6422391.html 一、會話機制     Web程式中常用的技術,用來跟蹤使用者的整個會話。常用的會話跟蹤技術是Cookie與Session。Cookie通過在客戶端記錄資訊確定使用者身份,Session通過在伺服器端

從零寫一個Java WEB框架(七)Controller轉換器

該系列,其實是對《架構探險》這本書的實踐。本人想記錄自己的學習心得所寫下的。 從一個簡單的Servlet專案開始起步。對每一層進行優化,然後形成一個輕量級的框架。 每一篇,都是針對專案的不足點進行優化的。 專案已放上github

從零寫一個Java WEB框架(六)Controller優化

該系列,其實是對《架構探險》這本書的實踐。本人想記錄自己的學習心得所寫下的。 從一個簡單的Servlet專案開始起步。對每一層進行優化,然後形成一個輕量級的框架。 每一篇,都是針對專案的不足點進行優化的。 專案已放上github

從零寫一個Java WEB框架(三)Dao優化

該系列,其實是對《架構探險》這本書的實踐。本人想記錄自己的學習心得所寫下的。 從一個簡單的Servlet專案開始起步。對每一層進行優化,然後形成一個輕量級的框架。 每一篇,都是針對專案的不足點進行優化的。 專案已放上github

從零寫一個Java WEB框架(二)Server 優化

該系列,其實是對《架構探險》這本書的實踐。本人想記錄自己的學習心得所寫下的。 從一個簡單的Servlet專案開始起步。對每一層進行優化,然後形成一個輕量級的框架。 每一篇,都是針對專案的不足點進行優化的。 專案已放上github 上一篇地

Java Web專案,Android微信小程式的初始頁面配置

Java Web專案 我們在Eclipse裡開了Java Web專案之後,Run As Tomcat或者Apache伺服器,本地執行,如果直接用http://localhost:8080訪問專案,會發現瀏覽器會開啟一個預設的頁面。 這個頁面是在什麼地方配置的呢?

Java Web入門(2) 配置tomcat伺服器

Java Web 入門配置tomcat伺服器 (1)在IDEA配置tomcat伺服器 1.下載tomcat9, Mac tar.gz Windows zip 2.Edit configurations-> + ->Tomcat Server ->

Java Web基礎——Action+Service +Dao三的功能劃分

1. Action/Service/DAO簡介:       Action是管理業務(Service)排程和管理跳轉的。       Service是管理具體的功能的。       Action只負

java web專案中daoservice前面為什麼要有介面呢??

介面提供了一個公用的方法提供方。 介面是用來規定子類的行為的。舉個例子吧 , 比如有個需求, 需要儲存客戶資訊, 有些客戶從網站來, 有些從手機客戶端來, 有些從後臺管理系統錄入, 假設不同來源的客戶有不同的處理業務流程, 這個時候我定義介面來提供一個儲存客戶的方法, 然後不同平臺實現我這個儲存客戶的介面,

Java內部類(2): 用法回撥

為什麼需要內部類 一般來說,內部類繼承自某個類或實現了某個介面,內部類程式碼操作建立它的外部類的物件,可以說,內部類提供了某種進入外部類的視窗,而且內部類自己本身實現了有效的程式碼隱藏。 內部類必須要回答的一個問題是:如果只是需要一個介面的引用,為什麼外部類

Java高階篇-2-裝箱拆箱的基本概念

       前面一篇的結尾,我們畫了一張圖,對Java的資料型別進行了分類。其中,有8種基本資料型別,還有引用型別。我們先來看看下面這段程式。 package demo3; /** * create by Anthony on 2017/10/28 */ publ

Java web專案的classpathclasspath*的區別,***的區別及如何查詢Java資原始檔路徑

這裡的專案都是Web專案才有classpath: web專案中的src路徑下的檔案在編譯後會放到WEB-INF/classess路徑下,預設的classpath路徑就是WEB-INF/classess路徑,直接放到WEB-INF下的話,是不在classpath下的。用ClassPathXmlApp

java web servlet規範監聽器java 事件監聽器本質

https://blog.csdn.net/jpzhu16/article/details/52705928#httpsessionlistener%E7%9B%91%E5%90%AC%E5%99%A8%E6%8E%A5%E5%8F%A3%E4%BD%BF%E7%94%A8 JavaWeb中的監