action 裡面基本能處理所有的商務邏輯層的東西
一般我們的action 是繼承 DispatchAction 裡面可以包含很多不同方法
如果你要添加 ,就把你的資料傳過來到action 裡面 action再調用 Manager 裡面的方法添加
如果是刪除 就把你要刪除的id傳遞過來action action再調用 Manager 裡面的方法刪除
action 裡面並不是 處理 資料存放區 到 持久化 的相關操作
而使用一個“中間轉換”而已 根據你的業務 調用 相應的 Manager這個介面(這個裡面才是處理持久化的相關操作)
action 其實處理的相對簡單多了
ACTION裡的確可以處理簡單的資料,
但是不適合處理大量、並且需要複雜的邏輯處理的資料,所以把ACTION的功能減少更好
如果ACTION只負責頁面的跳轉和調用DAO,會使得ACITON的作用更明顯,程式的層次更清晰
其中的原理是java的事件模型,關於事件的資訊被封裝在一個事件對象中。所有的事件對象都從java.util.EventObject派生而來,每個事件類型都有一個子類,如ActionEvent和WindowEvent,不同的事件來源能夠產生不同種類的事件。例如,一個按鈕能夠發送ActionEvent對象,而一個視窗能夠發送WindowEvent對象。下面是AWT中的事件處理機制:
*一個監聽器對象,一個實現了專門的監聽器介面的類執行個體
*一個事件來源是一個能夠註冊監聽器並且為它們發送事件對象的對象
*當事件發生時,事件來源會把事件對象發送給註冊的全部監聽器
*監聽器對象會使用事件對象中的資訊決定對事件的反應
比如說,有一個JButton button
首先要對其進行註冊監聽
button.addActionListener(listener);
現在,只要按鈕中產生一個“動作事件”,listener對象就會得到通知,上面代碼的要求:監聽器對象所屬的類必須要實現合適的介面(這裡是ActionListener介面)。同Java中的所有的介面一樣,實現介面意味著要提供介面中的方法的實現。為了實現ActionListener介面,監聽器類必須實現一個actionPerformed方法,其參數為一個ActionEvent對象,比如你可以這樣定義:
class TestListener implements ActionListener{
.............
public void actionPerformed(ActionEvent event){
//處理事件
}
}
這樣一個監聽器就構造好了,你只要在上面產生一個TestListener的執行個體,listener就可以,一般的處理可以把這個和你的主類寫在一起,比如:
import java.awt.event.*;
import javax.swing.*;
public class Test implements ActionListener{
private JButton button = new JButton("Ok");
public Test(){
button.addActionListener(this);
}
public void actionPerformed(ActionEvent ae){
//do work
}
}
不過很多情況也寫成內部類的情況
action中處不處理業務不是絕對的,它取決於你的項目架構,
如果你的架構在業務層只有action-->dao那麼action中就要處理一些業務,
當然你可以架構成action-->javabean/ejb-->dao,那麼業務可以放在bean中處理。
如果你架構成action-->service-->dao,那麼你自然會在service中處理的你的業務。
如何架構取決於你,當然在action中處不處理業務也取決於你,這不是絕對的。