大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國(guó)咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) 學(xué)習(xí)攻略 Java學(xué)習(xí) 一文讀懂Java MVC框架是什么

一文讀懂Java MVC框架是什么

更新時(shí)間:2022-09-29 11:00:39 來源:動(dòng)力節(jié)點(diǎn) 瀏覽3128次

基于MVC架構(gòu)的模型設(shè)計(jì)遵循MVC設(shè)計(jì)模式,在設(shè)計(jì)軟件時(shí)將應(yīng)用程序邏輯與用戶界面分離。顧名思義,MVC模式有三層,分別是:

模型–表示應(yīng)用程序的業(yè)務(wù)層

視圖–定義應(yīng)用程序的演示

控制器–管理應(yīng)用程序流

在Java編程上下文中,模型由簡(jiǎn)單的Java類組成,視圖顯示數(shù)據(jù),控制器由servlet組成。這種分離導(dǎo)致按如下方式處理用戶請(qǐng)求:

客戶端上的瀏覽器向服務(wù)器上的控制器發(fā)送頁(yè)面請(qǐng)求

控制器執(zhí)行調(diào)用模型的操作,從而檢索響應(yīng)請(qǐng)求所需的數(shù)據(jù)

然后,控制器將檢索到的數(shù)據(jù)提供給視圖

視圖將被渲染并發(fā)送回客戶端以供瀏覽器顯示

將軟件應(yīng)用程序分為這三個(gè)不同的組件是一個(gè)好主意,原因有很多。讓我們看看這些是什么。

Java中MVC架構(gòu)的優(yōu)勢(shì)

MVC體系結(jié)構(gòu)為程序員開發(fā)應(yīng)用程序提供了許多優(yōu)勢(shì),包括:

多個(gè)開發(fā)人員可以同時(shí)使用三個(gè)層(模型、視圖和控制器)

提供了改進(jìn)的可擴(kuò)展性,補(bǔ)充了應(yīng)用程序的增長(zhǎng)能力

由于組件之間的依賴性較低,因此易于維護(hù)

一個(gè)模型可以被多個(gè)視圖重用,從而提供代碼的重用性

MVC的采用使應(yīng)用程序更具表現(xiàn)力,更易于理解

應(yīng)用程序的擴(kuò)展和測(cè)試變得容易

現(xiàn)在您知道了為什么MVC是web編程世界中最流行的設(shè)計(jì)模式。但是,如果你仍在努力了解MVC的概念,不要擔(dān)心。我們將深入挖掘每一層,并借助一個(gè)示例程序了解其目的。

使用Java實(shí)現(xiàn)MVC

為了實(shí)現(xiàn)基于MVC設(shè)計(jì)模式的web應(yīng)用程序,我們將創(chuàng)建

課程類,充當(dāng)模型層

CourseView類,定義表示層(視圖層)

CourseController類,充當(dāng)控制器

現(xiàn)在,讓我們逐一探索這些層。

模型層

在MVC設(shè)計(jì)模式中,模型是定義系統(tǒng)業(yè)務(wù)邏輯并表示應(yīng)用程序狀態(tài)的數(shù)據(jù)層。模型對(duì)象在數(shù)據(jù)庫(kù)中檢索并存儲(chǔ)模型的狀態(tài)。通過這一層,我們將規(guī)則應(yīng)用于數(shù)據(jù),最終表示應(yīng)用程序管理的概念。現(xiàn)在,讓我們使用Course Class創(chuàng)建一個(gè)模型。

package MyPackage; 
public class Course {
       private String CourseName;
       private String CourseId;
       private String CourseCategory;        
       public String getId() {
          return CourseId;
       }        
       public void setId(String id) {
          this.CourseId = id;
       }        
       public String getName() {
          return CourseName;
       }        
       public void setName(String name) {
          this.CourseName = name;
       }
       public String getCategory() {
              return CourseCategory;
           }        
       public void setCategory(String category) {
              this.CourseCategory = category;
           }        
    }

代碼很容易理解,而且是不言自明的。它包含獲取/設(shè)置課程詳細(xì)信息的功能。

視圖層

MVC設(shè)計(jì)模式的這一層表示應(yīng)用程序或用戶界面的輸出。它顯示控制器從模型層獲取的數(shù)據(jù),并在需要時(shí)向用戶顯示數(shù)據(jù)。它從控制器接收所需的所有信息,不需要直接與業(yè)務(wù)層交互。讓我們使用CourseView類創(chuàng)建一個(gè)視圖。

package MyPackage;
public class CourseView {
       public void printCourseDetails(String CourseName, String CourseId, String CourseCategory){
          System.out.println("Course Details: ");
          System.out.println("Name: " + CourseName);
          System.out.println("Course ID: " + CourseId);
          System.out.println("Course Category: " + CourseCategory);
       }
    }

這段代碼只是將值打印到控制臺(tái)。接下來,我們有web應(yīng)用程序的控制器。

控制器層

控制器就像模型和視圖之間的接口。它從視圖層接收用戶請(qǐng)求并處理它們,包括必要的驗(yàn)證。然后將請(qǐng)求發(fā)送到模型進(jìn)行數(shù)據(jù)處理。一旦處理完畢,數(shù)據(jù)將再次發(fā)送回控制器,然后顯示在視圖上。讓我們創(chuàng)建充當(dāng)控制器的CourseController類。

package MyPackage; 
public class CourseController {
       private Course model;
       private CourseView view;
       public CourseController(Course model, CourseView view){
          this.model = model;
          this.view = view;
       } 
       public void setCourseName(String name){
          model.setName(name);      
       } 
       public String getCourseName(){
          return model.getName();       
       } 
       public void setCourseId(String id){
          model.setId(id);      
       } 
       public String getCourseId(){
          return model.getId();     
       }
       public void setCourseCategory(String category){
              model.setCategory(category);      
       } 
           public String getCourseCategory(){
              return model.getCategory();       
       }
       public void updateView(){                
          view.printCourseDetails(model.getName(), model.getId(), model.getCategory());
       }    
    }

粗略地看一下代碼,就會(huì)知道這個(gè)控制器類只負(fù)責(zé)調(diào)用模型來獲取/設(shè)置數(shù)據(jù),并基于此更新視圖。現(xiàn)在讓我們看看這些是如何聯(lián)系在一起的。

主Java類

讓我們將這個(gè)類稱為“MVCPatternDemo.java”。檢查下面的代碼。

package MyPackage; 
public class MVCPatternDemo {
       public static void main(String[] args) { 
          //fetch student record based on his roll no from the database
          Course model  = retriveCourseFromDatabase(); 
          //Create a view : to write course details on console
          CourseView view = new CourseView(); 
          CourseController controller = new CourseController(model, view); 
          controller.updateView(); 
          //update model data
          controller.setCourseName("Python");
          System.out.println("nAfter updating, Course Details are as follows"); 
          controller.updateView();
       } 
       private static Course retriveCourseFromDatabase(){
          Course course = new Course();
          course.setName("Java");
          course.setId("01");
          course.setCategory("Programming");
          return course;
       }
    }

上面的類從用戶輸入值集的函數(shù)中獲取課程數(shù)據(jù)。然后將這些值推送到課程模型中。然后,它初始化我們?cè)诒疚那懊鎰?chuàng)建的視圖。此外,它還調(diào)用CourseController類并將其綁定到Course類和CourseView類。作為控制器一部分的updateView()方法隨后在控制臺(tái)上更新課程詳細(xì)信息。檢查以下輸出。

輸出

Course Details: 
Name: Java
Course ID: 01
Course Category: Programming
After updating, Course Details are as follows
Course Details: 
Name: Python
Course ID: 01
Course Category: Programming

MVC體系結(jié)構(gòu)為您的代碼提供了全新的模塊化級(jí)別,使其更具可讀性和可維護(hù)性。如果大家想了解更多相關(guān)知識(shí),不妨來關(guān)注一下本站的MVC視頻教程,里面課程內(nèi)容細(xì)致全面,通俗易懂,很適合沒有基礎(chǔ)的小伙伴學(xué)習(xí),希望對(duì)大家能夠有所幫助。

提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)

  • 全國(guó)校區(qū) 2025-06-26 搶座中
免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 91在线视频| 91网址在线播放 | 欧美一区二区三区不卡片 | 欧美乱码 | 成人毛片免费观看视频大全 | 在线观看不卡视频 | 男女性高清爱潮视频免费观看 | 日本视频h | 成人小视频在线观看免费 | 狠狠狠狠狠狠狠 | 久久综合久久综合久久 | 久久久久一 | 亚洲国产爱 | 精品煌色视频网站在线观看 | 国产v视频| 深夜男人天堂 | 911视频免费版 | 一级毛片成人午夜 | 久久久精品中文字幕 | 精品国产日韩一区三区 | 免费一级a毛片夜夜看 | 欧美一级片网站 | 四虎影院精品 | 亚洲精品专区一区二区三区 | 日韩三级 | 日本一级毛片片免费观看 | 成人免费视频在线看 | 91热久久免费频精品黑人99 | 国产一区二区中文字幕 | 99色视频| 欧美成人性视频播放 | 欧美日韩国产中文字幕 | 在线观看国产一区亚洲bd | 欧美日韩a级片 | 成人乱色短篇合集 | 男人的天堂a在线 | 高清黄色直接看 | 在线不卡福利 | 午夜视频网站 | 中文在线亚洲 | 97视频在线视频 |