Java MVC 模式
MVC 模式
MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式。这种模式用于应用程序的分层开发。
- Model(模型) - 模型代表一个存取数据的对象或 JAVA POJO。它也可以带有逻辑,在数据变化时更新控制器。
- View(视图) - 视图代表模型包含的数据的可视化。
- Controller(控制器) - 控制器作用于模型和视图上。它控制数据流向模型对象,并在数据变化时更新视图。它使视图与模型分离开。

实现
我们将创建一个作为模型的 Student 对象。StudentView 是一个把学生详细信息输出到控制台的视图类,StudentController 是负责存储数据到 Student 对象中的控制器类,并相应地更新视图 StudentView。
MVCPatternDemo,我们的演示类使用 StudentController 来演示 MVC 模式的用法。
步骤 1
创建模型。
1 Student.java
2
3 public class Student {
4 private String rollNo;
5 private String name;
6 public String getRollNo() {
7 return rollNo;
8 }
9 public void setRollNo(String rollNo) {
10 this.rollNo = rollNo;
11 }
12 public String getName() {
13 return name;
14 }
15 public void setName(String name) {
16 this.name = name;
17 }
18 }
步骤 2
创建视图。
1 StudentView.java
2 public class StudentView {
3 public void printStudentDetails(String studentName, String studentRollNo){
4 System.out.println("Student: ");
5 System.out.println("Name: " + studentName);
6 System.out.println("Roll No: " + studentRollNo);
7 }
8 }
步骤 3
创建控制器。
1 StudentController.java
2 public class StudentController {
3 private Student model;
4 private StudentView view;
5
6 public StudentController(Student model, StudentView view){
7 this.model = model;
8 this.view = view;
9 }
10
11 public void setStudentName(String name){
12 model.setName(name);
13 }
14
15 public String getStudentName(){
16 return model.getName();
17 }
18
19 public void setStudentRollNo(String rollNo){
20 model.setRollNo(rollNo);
21 }
22
23 public String getStudentRollNo(){
24 return model.getRollNo();
25 }
26
27 public void updateView(){
28 view.printStudentDetails(model.getName(), model.getRollNo());
29 }
30 }
步骤 4
使用 StudentController 方法来演示 MVC 设计模式的用法。
1 MVCPatternDemo.java
2 public class MVCPatternDemo {
3 public static void main(String[] args) {
4
5 //从数据库获取学生记录
6 Student model = retrieveStudentFromDatabase();
7
8 //创建一个视图:把学生详细信息输出到控制台
9 StudentView view = new StudentView();
10
11 StudentController controller = new StudentController(model, view);
12
13 controller.updateView();
14
15 //更新模型数据
16 controller.setStudentName("John");
17
18 controller.updateView();
19 }
20
21 private static Student retrieveStudentFromDatabase(){
22 Student student = new Student();
23 student.setName("Robert");
24 student.setRollNo("10");
25 return student;
26 }
27 }
步骤 5
执行程序,输出结果:

Java MVC 模式的更多相关文章
- Java——MVC模式
MVC:Model View Controller 一般用于动态程序设计,实现了业务逻辑和表示层分离 Model:掌控数据源-->程序员编写程序或者实现算法,数据库人员进行数据库操作等:响应用户 ...
- 使用Java MVC模式设计一个学生管理系统
最近在做web实验,要求是用jsp+servlet+mysql实现一个学生管理系统,完成对数据库的增删改查. 效果图: 代码: package dao; import java.util.List ...
- java 图形界面 mvc模式控制
使用模型-视图-控件结构来开发GUI程序. 下面的程序演示了MVC模式开发的java程序. 其中CircleModel为模型,包含了圆的半径,是否填充,等属性. CircleView为视图,显示这个圆 ...
- 【转】用java实例学习MVC模式
.1 MVC模式 MVC是三个单词的缩写,这三个单词分别为:模型(Model).视图(View)和控制(Controller).MVC模式的目的就是实现Web系统的职能分工.下面以J2EE开发进行介绍 ...
- 【转】利用MVC模式开发Java应用程序[组图]
Java是一种面向对象的语言,是实现面向对象编程的强大工具.我们在实际编程中,应该运用并发挥其最大效能.但是,要利用面向对象编程思想,自己独立开 发出好的Java应用程序,非凡是大.中型程序,并不是一 ...
- Java的MVC模式简介
Java的MVC模式简介 MVC(Model View Control)模型-视图-控制器 首先我们需要知道MVC模式并不是javaweb项目中独有的,MVC是一种软件工程中的一种软件架构模式,把软件 ...
- MVC模式在Java Web应用程序中的实例分析
MVC在软件架构中是一种比较重要的架构思想,已经被广泛的应用在实际的java web项目开发中,我们所要了解和掌握的是mvc的架构思想和使用mvc模式来分析和解决问题的方法.当然相同或不同的项目都有各 ...
- java核心技术第五篇之事务和MVC模式
第一部分:事务1.事务的简介: 1.1 在一组操作中(比如增加操作,修改操作),只有增加和修改操作都成功之后,这两个操作才能真正的成功. ,如果这两个操作中,有一个失败了,这两个操作都失败了. 1.2 ...
- Java EE模式和MVC
Java EE模式 什么是模式? 开发过程中总结出来的约定俗成的"套路". Java EE经历的模式 model1模式 技术组成:JSP+JavaBean model1的弊端:随着 ...
- JSP的执行原理、JSP的内置对象、四大作用域解析、MVC模式理解>从零开始学JAVA系列
目录 JSP的执行原理.JSP的内置对象.四大作用域解析.MVC模式理解 JSP的执行原理 这里拿一个小例子来解析JSP是如何被访问到的 首先将该项目部署到tomcat,并且通过tomcat启动 通过 ...
随机推荐
- [LeetCode刷题记录]113 路径总和 II
题目描述 给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径. 说明: 叶子节点是指没有子节点的节点. 难度 中等 题解 采用深度搜索优先,遍历每条从根节点到叶子节点的 ...
- 西门子PLC高校作业以及创新项目
抢答器 在主持人按下启动按钮,3秒内
- 未能加载文件或程序集“System.ValueTuple, Version=0.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。
一些老的项目在使用SAEA.Socket相关库后,程序本地测试正常,结果上传到服务器上后提示:未能加载文件或程序集"System.ValueTuple, Version=0.0.0.0, C ...
- 给textarea添加行号,textarea使用代码风格的一些思考
背景 项目有个需求是 在textarea中编辑脚本并显示为代码风格样式,显示行号: textarea显示行号 思路: 1.监听textarea内容变化,执行一个change函数,解析内容里面有多少个换 ...
- KVM环境:Active console session exists for this domain
做测试过程中被迫换电脑,但没有关掉原电脑的连接,所以用其他电脑连接测试环境时,发现之前的kvm测试环境因没有断开,无法连接: error: operation failed: Active conso ...
- 小知识:Oracle RAC添加服务名实现单节点访问
环境:Oracle 11.2.0.4 RAC(2 nodes) 1.查看RAC IP配置信息 2.添加服务名并启动服务 3.停止服务并删除服务名 1.查看RAC IP配置信息 我们先查看下环境的IP分 ...
- PostgreSQL-查询每个表的大小
1.查询数据库中单个表的大小(不包含索引) select pg_size_pretty(pg_relation_size('表名')); 2.查询所有表的大小并排序(包含索引) SELECT tabl ...
- js 手动实现bind方法,超详细思路分析!
壹 ❀ 引 在 js 实现call和apply方法 一文中,我们详细分析并模拟实现了call/apply方法,由于篇幅问题,关于bind方法实现只能另起一篇. 在模拟bind之前,我们先了解bind的 ...
- 神经网络优化篇:详解深度学习框架(Deep Learning frameworks)
深度学习框架 一小点作者内心os:24年春节已过完,从熟悉的地方又回到陌生的地方谋生,愿新的一年都得偿所愿,心想事成. 学到这会儿会发现,除非应用更复杂的模型,例如卷积神经网络,或者循环神经网络,或者 ...
- Java8接口中抽象方法和default和static方法的区别和使用
Java接口说明 传统的理解是接口只能是抽象方法.但是程序员们在使用中,发现很不方便,实现接口必须重写所有方法,很麻烦.所以java设计者妥协了,在java8中,支持default和static方法, ...