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