1. 程式人生 > >Java——Web開發之開源框架DBUtils的使用,JSP開發模式,三層架構與MVC設計模式的認識

Java——Web開發之開源框架DBUtils的使用,JSP開發模式,三層架構與MVC設計模式的認識

DBUtils的使用:

在使用開源框架DBUtils時,它只是幫我們簡化了CRUD的程式碼,但是它不負責連線的建立以及獲取工作。

1.和使用開源框架都一樣的一個步驟,先匯入jar檔案

2.在這裡採用的是開源資料庫連線池C3P0進行連線

3.編寫CRUD程式碼

使用其功能實現的操作:

QueryRunner QR=new QueryRunner(CPDS);

  • 增加操作:QR.update("insert into account values(null,?,?)","wew",1000);
  • 刪除操作:QR.update("delete from account where id=?",3);
  • 修改操作:QR.update("update account set money=? where id=?", 10000,5);
  • 查詢操作(一):直接建立ResultSetHandler介面的匿名實現類方式
    • 去執行查詢,查詢到的資料還是在result裡面,然後呼叫handle方法,由使用者手動封裝
  • 查詢操作(二):直接使用框架已經寫好的實現類ResultSetHandler的方式
    • 查詢出來的是一個物件,用BeanHandler
    • 查詢出來的是很多物件則用BeanListHandler

 

常用的實現類
BeanHandler:查詢到的單個數據封裝成一個物件
BeanListHandler:查詢到的多個數據封裝成一個List<物件>
ArrayHandler:查詢到的單個數據封裝成一個數組
ArrayListHandler:查詢道德多個數據封裝成一個集合,集合裡面的元素是陣列
MapHandler:查詢到的單個數據封裝成一個Map
MapListHandler:查詢到的多個數據封裝成一個集合,集合裡面的元素是map
ColumnListHandler:查詢具體某一列
KeyedHandler:查詢具體某一個值
ScalarHandler:查詢一些聚合函式(count總數)
        

 

TestDBUtils.java

package dbutil;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.ResultSetHandler;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.junit.Test;

import bean.Account;

import com.mchange.v2.c3p0.ComboPooledDataSource;

public class TestDBUtils {
	
	@Test
	public void testInsert() throws SQLException{
		
		ComboPooledDataSource CPDS=new ComboPooledDataSource();
		QueryRunner QR=new QueryRunner(CPDS);
		
		/*
		//增加操作
		QR.update("insert into account values(null,?,?)","wew",1000);
		
		//刪除操作
		QR.update("delete from account where id=?",3);
		
		//修改操作
		QR.update("update account set money=? where id=?", 10000,5);
		*/

		//查詢操作(一)直接建立ResultSetHandler介面的匿名實現類方式
		//去執行查詢,查詢到的資料還是在result裡面,然後呼叫handle方法,由使用者手動封裝
		Account account=QR.query("select *from account where id=?", new ResultSetHandler<Account>(){

			@Override
			public Account handle(ResultSet rs) throws SQLException {
				Account account=new Account();
				while(rs.next()){
					String name=rs.getString("name");
					int money=rs.getInt("money");
					account.setName(name);
					account.setMoney(money);
				}
				return account;
			}
			
		},6);
		System.out.println(account.toString());	//Account [name=abc, money=2345]
		
		//查詢操作(二)直接使用框架已經寫好的實現類ResultSetHandler的方式
		//查詢單個物件
		Account account2=QR.query("select *from account where id=?",
				new BeanHandler<Account>(Account.class) ,6); 
		//Account.class通過類的位元組碼得到該類的例項
		System.out.println(account2.toString());
		
		//查詢多個物件
		List<Account> list = QR.query("select *from account", 
				new BeanListHandler<Account>(Account.class));
		for (Account account3 : list) {
			System.out.println(account3.toString());
		}
	}
}

Account.java

package bean;

public class Account {
	private String name;
	private int money;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getMoney() {
		return money;
	}
	public void setMoney(int money) {
		this.money = money;
	}
	@Override
	public String toString() {
		return "Account [name=" + name + ", money=" + money + "]";
	}
}

為了避免一些麻煩,所以給出目錄結構,並標出用到的jar檔案,配置檔案等等...

 

JSP開發模式,三層架構與MVC設計模式的認識:

  • JSP的開發模式:

         開發模式1:JavaBean+JSP
             在jsp裡直接寫java程式碼,維護起來困難,且jsp的頁面程式碼會變成臃腫
         開發模式2:JavaBean+JSP+Servlet
             實際上是MVC模式:
             M(Model)模型層:    封裝資料,資料處理JavaBean    java類    EJB
             V(View)檢視層:     JSP  jsp專注於顯示
             C(Controller)控制層:  Servlet,接受頁面的請求,找模型層去處理,然後響應資料出去
             對於大型專案:分層,邏輯比較清楚,便於維護,擴充套件方便。(適合)
             對於小型專案:嚴格遵守MVC,比較麻煩,程式碼會比較多 

  • 三層架構:

         Web層:Servlet/jsp
         業務邏輯層:EJB 會話bean JavaBean
         資料訪問層:DAO

  • MVC設計模式:

         M:對應於三層架構裡的業務邏輯層和資料訪問層;實現資料的封裝和資料的處理
         V:對應於三層架構裡的Web層;實現顯示
         C:對應於三層架構裡的Web層;實現了接受請求,呼叫模型層處理資料,反饋給View