JSP开发--MVC模式(三)

article/2025/9/12 21:49:58
  • MVC(Model-View-Controller)模式,即模型-视图-控制器模式
  • MVC1和MVC2模式
  • JSP+JavaBean+Servlet实现MVC

 

一:MVC(Model-View-Controller)模式

MVC模式把交互系统的组成分解成模型(Model)、视图(View)、控制器(Controller)三种部件。它强制性地使应用程序的输入、处理和输出分开

 

模型(Model)部分:是软件所处理问题逻辑在独立于外在显示内容和形式情况下的内在抽象,封装了问题的核心数据、逻辑和功能的计算关系,它独立于具体的界面表达和I/O操作。

视图(View)部分:是表示模型数据及逻辑关系和状态的信息及特定形式展示给用户。它从模型获得显示信息,对于相同的信息可以有多个不同的显示形式或视图。

控制器(Controller)部分:是用来处理用户与软件的交互操作的,其职责是控制提供模型中任何变化的传播,确保用户界面于模型间的对应联系;它接受用户的输入,将输入反馈给模型,进而实现对模型的计算控制,是使模型和视图协调工作的部件。通常一个视图具有一个控制器

 

 

二:MVC1和MVC2模式

MVC模式在具体的应用中,又分为MVC1和MVC2模式

(1)MVC1模式

  •  View接受用户输入,并传递到Controller;
  •  Controller统一进行处理命令,交由Model处理具体的业务;  
  • 经过处理Model更新后,通知View进行更新

这种模式主要用于桌面程序,使用观察者模式实现,具体来说就是让View观察Model,而用户交互控制的地方用匿名类的方式统一放在Controller中。像MFC的frame-document-view架构,如果document改变了,它会主动通知View进行update

但是在WEB应用程序中,Model(在Java中通常是JavaBean)的数据更新后,无法通知View进行更新(View在Java中通常是非常多JSP页面,需要选择一个),因此,在WEB应用程序中应该使用下面这种模式:MVC2模式

 

(2)MVC2模式

 View接受用户输入,并传递到Controller。   Controller统一进行处理命令,交由model处理具体的业务。   经过处理的Model更新后,Controller会选一个View并把Model内容传递(request、session)给它(forward)。然后View进行显示。 分析上述两个图,知MVC1和MVC2模式的主要差别就是Model是否能主动通知View。

桌面程序可以实现,所以选择MVC1模式;Web程序由于Http协议的限制无法实现;所以选择MVC2模式。 模型、视图与控制器的分离,使得一个模型可以具有多个显示视图。如果用户通过某个视图的控制器改变了模型的数据,所有其它依赖于这些数据的视图都应反映到这些变化。因此,无论何时发生了何种数据变化,控制器都会将变化通知所有的视图,导致显示的更新。这实际上是一种模型的变化-传播机制

 

 

 

三:JSP+JavaBean+Servlet实现MVC

所有的操作都会调用service这个接口,然后调用javaBean操作数据库。要想实现MVC,最重要的是Web资源包装器RequestDispatcher,由它解决输出和跳转的问题,它将javaBean的处理结果交给JSP(java Server Page),JSP将根据javaBean的指示将内容输出。Servlet负责将所有的一次性显示的内容交给JSP完成,那么最合适的属性作用域就是request作用域,因为选择属性作用域优先级从大到小分别是:page(pageContext)、request、session、application

用户通过提交Requests与Controller组件(通常表现为Servlets)交互。接着Controller组件实例化Model组件(通常 表现为JavaBeans或者类似技术),并且根据应用的逻辑操纵它们。一旦Model被创建,Controller决定下一个为用户显示的View(常常表现为JSP),同时View从Controller获得Model并为用户显示相关数据

 

MVC模式中各组件具体职责如下:

1.JavaBean(Model)的职责

  • 封装数据——值JavaBean
  • 封装业务——工具JavaBean

2.Servlet(Controller)的职责

  • 控制流程,接受请求参数,调用JavaBean,获取结果数据,并将数据存储在某个作用域范围之中,最后选择页面显示

3.JSP(View)的职责

  • 获取Servlet存储在某个作用域之中的数据,进行显示

 

 

四:开发步骤(不是绝对的,只是作一个参考)

MVC模式开发主要步骤:

步骤一:开发JavaBean来表示数据和业务;

步骤二:通过Servlet处理请求,读取请求参数;

步骤三:Servlet调用JavaBean,实现业务逻辑,获取结果数据;

步骤四:Servlet调用请求、会话等对象的setAttribute方法,将结果数据存储在某个作用域范围之中;

步骤五:Servlet选择合适的JSP页面,通过RequestDispatcher的forward方法跳转至该页面;

步骤六:JSP页面获取Servlet存储的结果数据,进行展示。

以上步骤没有包含JSP页面开发,步骤中的操作并非绝对化。比如:【步骤5】中的跳转方法,Servlet跳转至JSP的最常用方法是RequestDispatcher.forward,有时也用到response.sendRedirect,两种方法有所区别


http://chatgpt.dhexx.cn/article/KxQ3cyKC.shtml

相关文章

MVC模式概述

一、MVC模式简介 1.1 MVC概念 首先我们需要知道MVC模式并不是javaweb项目中独有的,MVC是一种软件工程中的一种设计模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器&#xf…

python-设计模式-MVC模式

概述 mvc模式的思想就是分层,将每个关注点的问题放在不同的层上进行解决。该模式符合SOC(关注点分离)原则,一般会分为数据访问层,业务逻辑层,表示层。 数据访问层:处理和数据的交互&#xff0…

MVC模式和三层架构

MVC模式和三层架构 MVC模式三层架构MVC与三层架构的联系MVC与三层架构的异同 MVC模式 MVC(Model View Controller)是软件工程中的一种软件设计模式,它把软件系统分为模型、视图和控制器三个基本部分。用一种业务逻辑、数据、界面显示分离的方…

实验电子商城 mvc设计思想简介

这次实验的要求是使用mvc设计模式完成一个购物车的项目 使用技术是java中jspservletjavabeanjdbc,实现MVC分层设计模式,数据库采用的是mysql 接下来我们一步一步的来完成这个项目,首先是对整个项目的设计模式与逻辑进行分析 在MVC模式中,一个…

MVC模式简介

MVC模式 一.MVC是什么二.优缺点2.1 MVC模式的优点2.1.1 低耦合2.1.2 重用性高2.1.3 生命周期成本低2.1.4 部署快2.1.5 可维护性高2.1.6 有利软件工程化管理 2.2 MVC模式的缺点2.2.1 没有明确的定义2.2.2 不适合小、中型应用程序2.2.3 增加系统结构和实现的复杂性2.2.4 视图对模…

MVC模式浅谈

一、MVC模式概述 模型-视图-控制器(MVC模式)是一种非常经典的软件架构模式,在UI框架和UI设计思路中扮演着非常重要的角色。从设计模式的角度来看,MVC模式是一种复合模式,它将多个设计模式在一种解决方案中结合起来&am…

​MVC​​模式简介

MVC模式简介 MVC简介 MVC的全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,是一种软件设计典范。它是用一种业务逻辑、数据与界面显示分离的方法来组织代码,将众多的业务逻辑聚集到…

MVC模式介绍

本文主要介绍 MVC 模式的相关知识。 1 What MVC(Model–View–Controller)模式是软件工程中的一种软件架构模式,它把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器&a…

【js】addEventListener() 用法

addEventListener() 方法用于向指定元素添加事件句柄。 addEventListener() 方法添加的事件句柄不会覆盖已存在的事件句柄。 你可以向一个元素添加多个事件句柄。 你可以向同个元素添加多个同类型的事件句柄,如:两个 "click" 事件。 你可以…

JS中addEventListener的用法

事件模型 这是一个完整的事件流: 事件捕获----处于目标----事件冒泡 注意:事件捕获由于浏览器兼容问题用的比较少 事件处理程序(addEventListener) 格式为:element.addEventListener(type, handle, false); type: 事…

JS addEventListener()方法

addEventListener(),事件监听,用于向指定的元素添加事件监听 语法:addEventListener(event,function,useCapture); 第一个参数event:指事件的类型(如’click’,‘mousedown’) 第二个参数function&#xf…

JS中addEventListener的使用

使用addEventListener绑定事件:MDN中addEventListener()说明 使用removeEventListener可以解绑事件: MDN中removeEventListener()说明 1,我们使用addEventListener的时候,主要用来实现事件的绑定监听的 存在三个参数 target.addE…

addEventListener()使用方法

document.addEventListener() 方法用于向文档添加事件句柄&#xff0c;即事件监听。先看下面代码&#xff0c;稍后进行讲解。 <!DOCTYPE html> <html> <head><meta charset"utf-8"><title></title> </head> <body>&…

关于JS中addEventListener的使用

关于JS中addEventListener的使用 MDN中addEventListener()说明 使用removeEventListener可以解绑事件 MDN中removeEventListener()说明 主要用来实现事件的绑定 存在三个参数 target.addEventListener(type, listener, useCapture); type: 表示监听事件类型的字符串。类似于…

JavaScript属性及正则表达式

目录 offset、client、scroll属性offsetclientscroll 正则表达式什么是正则表达式正则表达式的特点正则表达式的创建正则表达式的检验正则表达式的修饰符模式修饰符边界符预定义符转义特殊字符字符类字符组合取反符量词符括号字符 正则表达式的优先级String类中的方法match方法…

前端js正则表达式

正则表达式 第一章 正则表达式字符匹配攻略 1.1. 两种模糊匹配 1.1.1. 横向模糊匹配 一个正则可匹配的字符串的长度不是固定的&#xff0c;可以是多种情况的。譬如 {m,n}&#xff0c;表示连续出现最少 m 次&#xff0c;最多 n 次。其实现的方式是使用量词。例如let reg /a…

JS正则表达式字符匹配

正则表达式字符匹配 这是阅读《JavaScript正则表达式迷你书》后整理的一些笔记。 正则表达式是匹配模式&#xff0c;要么匹配字符&#xff0c;要么匹配位置。 下面主要介绍匹配字符的情况&#xff0c;匹配位置的情况我也正在学习中。 两种模糊匹配&#xff1a; 1.横向模糊匹…

JS正则表达式

JS正则表达式 0.前言 首先是一些资料[在线测试网站](regex101: build, test, and debug regex)和简明易懂教程。 正则表达式是一组由字母和符号组成的特殊文本&#xff0c;它可以用来从文本中找出满足你想要的格式的句子。 一个正则表达式是一种从左到右匹配主体字符串的模式。…

Spring框架总结

简介 创立于 2003年 , 是为了解决企业级开发的复杂性的! 是一个分层的se/ee(javase和java ee)一站式轻量级开源框架 作用&#xff1a; 1.Spring是一个开元的轻量级的应用开发框架&#xff0c;其目的是用于简化企业级应用程序开发&#xff0c;减少侵入&#xff1b; 2.Spring的…

Spring框架特点

Spring是什么&#xff1f; spring是一个轻量级的 IOC&#xff08;控制反转&#xff09;和AOP(面向切面)的编程。 什么是IOC? IOC(控制反转) &#xff1a;传统JAVA SE 程序设计&#xff0c;我们直接在程序内部通过new来创建对象&#xff0c;是程序主动去创建依赖对象&#x…