mvc2

mvc2

mvc2是模型-視圖-控制器 (MVC)。

簡介,代碼,控制類,視圖類,模組類,

簡介

JSP 標記只解決了部分問題。我們還得處理驗證、流程控制和更新應用程式的狀態等問題。這正是 MVC 發揮作用的地方。MVC 通過將問題分為三個類別來幫助解決單一模組方法所遇到的某些問題:Model(模型)
模型包含應用程式的核心功能。模型封裝了應用程式的狀態。有時它包含的唯一功能就是狀態。它對視圖或控制器一無所知。
View(視圖)
視圖提供模型的表示。它是應用程式的外觀。視圖可以訪問模型的讀方法,但不能訪問寫方法。此外,它對控制器一無所知。當更改模型時,視圖應得到通知。
Controller(控制器)
控制器對用戶的輸入作出反應。它創建並設定模型。
MVC Model 2
Web 向軟體開發人員提出了一些特有的挑戰,最明顯的就是客戶機和伺服器的無狀態連線。這種無狀態行為使得模型很難將更改通知視圖。在 Web 上,為了發現對應用程式狀態的修改,瀏覽器必須重新查詢伺服器。
View接受用戶輸入,並傳遞到Controller.
Controller統一進行處理命令,交由Model處理具體的業務.
經過處理Model更新後,Controller會選一個View並把Model內容傳遞(request,session)給它(forward).
然後View進行顯示.
這種模式相對MVC優勢很明顯,首先Model和View無需繼承甚么東西,其次Model和View無需了解對方的存在,只需準備相應的接口而已;缺點是Controller層變得相對複雜了。

代碼

控制類

package com.sitinspring;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;/** * 控制類 */public class Mvc2Ctrl {private Mvc2View view;private Mvc2Model model;public Mvc2Ctrl() {view = new Mvc2View();model = new Mvc2Model();handleEvents();}// 處理事件回響private void handleEvents() {addCloseLintener();addButtonListener();addButtonListener2();}// 窗體關閉事件相應private void addCloseLintener() {view.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {System.out.println("Exit MVC2");System.exit(0);}});}private void addButtonListener() {view.getButton().addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {view.getLabel().setText(model.getText());}});}private void addButtonListener2() {view.getButton2().addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {view.getLabel2().setText(model.getText2());}});}}

視圖類

package com.sitinspring;import java.awt.Dimension;import java.awt.GridLayout;import java.awt.Toolkit;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;/** * 視圖類(View) */public class Mvc2View extends JFrame {private static final long serialVersionUID = 621145935910133202L;private JButton button;private JLabel label;private JButton button2;private JLabel label2;public Mvc2View() {locateView(300, 200);this.setTitle("MVC2 Program");setupComponents();this.setVisible(true);}// 定位程式在螢幕正中並設定程式大小private void locateView(int width, int height) {Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();this.setSize(width, height);this.setLocation(screenSize.width / 2 - width / 2, screenSize.height/ 2 - height / 2);}// 初始化內部組件private void setupComponents() {button = new JButton("點擊回響事件1");label = new JLabel(" 等待事件回響1");button2 = new JButton("點擊回響事件2");label2 = new JLabel(" 等待事件回響2");setLayout(new GridLayout(2, 2));add(button);add(label);add(button2);add(label2);}public JButton getButton() {return button;}public JButton getButton2() {return button2;}public JLabel getLabel()return label;}public JLabel getLabel2() {return label2;}}

模組類

package com.sitinspring;/** * 模組類 */public class Mvc2Model{public String getText(){return " 事件1回響完畢";}public String getText2(){return " 事件2回響完畢";}}

相關詞條

熱門詞條

聯絡我們