JSP经典设计模式流程分析:JSP+JavaBean设计模式+MVC设计模式

news2024/11/16 21:52:00

JSP两种经典设计模式

Model1设计模式:JSP+JavaBean

架构图

 什么是JavaBean

  • JavaBean是一种JAVA语言写成的可重用组件,它遵循特定的编程规范,如类必须是公共的、具有无参构造函数,并提供getter/setter方法等。
  • 这里的JavaBean不单单指的是实体类,实际上包括除了JSP的所有Java编写的代码,如果是实体类,则表示实体模型;如果是Service则表示业务模型
  • 也就是说,JavaBean实际上是一种模型思想

这里的JSP设计模式指的是,由JSP完成前端页面+Servlet处理请求并响应的操作;由JavaBean(剩余的java代码)完成业务和数据库数据处理等操作

 为什么需要分层

  •  JSP开发的弊端
    • 业务处理的代码与JSP代码混在一起.不易于阅读,不易于代码维护,降低了程序的可维护性,可扩展性,同时不利于分工合作
 <form method="post" action="doLogin.jsp">
      <table>
         <tr>
    	<td>用户名称:<input type="text" name="user"/></td>
         </tr>
…
<%
    String uname=request.getParameter("user");
    String upwd=request.getParameter("pwd");
…
%>

Model2模式:(采用MVC设计模式)

  • Servlet:控制程序流程
  • JavaBean:实现业务逻辑层
  • JSP:负责数据显示

优点:

  • 层次关系更加清晰
  • 各组件分工更加明确

缺点:

  • 增加了编写的复杂度

MVC: 模型-视图-控制器: (Model-View-Controller)

 MVC

  • 模型:
    • 对应的组件是JavaBean.代表应用程序的数据以及用于访问,控制和修改这些数据的业务规则.
  • 视图:
    • 对应的组件是JSP或HTML.视图是用户看到并与之交互的界面.(它从模型中获取数据并指定这些数据应该如何表现)
  • 控制器:
    • 用的组件是Servlet.控制器负责转发请求,对请求进行处理.

MVC架构图

MVC执行流程:

1.客户端向服务器发送请求

2.服务器把请求分发给Servlet控制器

3.Servlet控制器获取用户输入的数据,并调用JavaBean进行

4.Servlet根据处理的结果选择一个JSP视图来响应用户.

5.JSP视图显示处理的数据(如果存在数据) 

 三层开发遵循的原则

  • 上层依赖其下层,依赖关系不跨层
    • 表示层不能直接访问数据访问层
    • 上层调用下层的结果,取决于下层的实现
  • 下一层不能调用上一层
  • 下一层不依赖上一层
    • 上层的改变不会影响下一层
    • 下层的改变会影响上一层得到的结果
  • 在上一层中不能出现下一层的概念
    • 分工明确,各司其职

分层开发的特点

  • 下层不知道上层的存在
    • 仅完成自身的功能
    • 不关心结果如何使用
  • 每一层仅知道其下层的存在,忽略其他层的存在
    • 只关心结果的取得
    • 不关心结果的实现过程
    • JSTL通常会与EL表达式合作实现JSP页面的编码

分层开发的优势

  • 职责划分清晰
  • 无损替换
  • 复用代码
  • 降低了系统内部的依赖程度

总结

  • JSP两种经典设计模式:
    • model1:JSP+JavaBean
    • model2:Jsp+Servlet+JavaBean
  • MVC设计模式:
    • M(JavaBean)+V(JSP)+C(Servlet)
  • 使用MVC的优点与缺点:
    • 优点:职责划分清晰,无损替换,复用代码,降低了系统内部的依赖程度
    • 缺点:增加编写的复杂度,不适合中小型系统

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2137194.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

五、回溯算法-算法总结

文章目录 五、回溯算法5.1 背景5.2 模板5.3 集合类5.3.1 子集5.3.2 子集2 5.4 排列类5.4.1 全排列5.4.2 全排列2 5.5 组合类5.5.1 组合总和5.5.2 电话号码的字母组合 五、回溯算法 5.1 背景 回溯法&#xff08;backtrack&#xff09;常用于遍历列表所有子集&#xff0c;是 DF…

OpenAI草莓正式发布,命名o1

一、相关介绍 当地时间 9 月 12 日&#xff0c;OpenAI 推出全新模型 o1&#xff0c;它是该公司计划推出的一系列“推理”模型中的首个&#xff0c;也就是此前业内传闻许久的“Strawberry&#xff08;草莓&#xff09;”项目。 据悉&#xff0c;o1 模型在众多任务中能够比人类更…

LabVIEW机动车动态制动性能校准系统

机动车动态制动性能测试系统通过高精度的硬件设备与LabVIEW软件的紧密配合&#xff0c;实现了对机动车制动性能的精确校准与评估。系统不仅提高了测试的精确性和效率&#xff0c;而且具备良好的用户交互界面&#xff0c;使得操作更加简便、直观。 项目背景 随着机动车辆数量的…

C++:类和对象全解

C&#xff1a;类和对象全解 一、类的定义和初始化&#xff08;一&#xff09;类的定义1、类的成员变量&#xff08;1&#xff09;成员变量&#xff08;2&#xff09;成员函数 2、实例化对象&#xff08;1&#xff09;采用普通构造函数&#xff08;2&#xff09;采用初始化列表 …

MySQL数据的增删改查(二)

目录 约束 非空约束&#xff08;NOT NULL&#xff09; 唯一约束&#xff08;UNIQUE&#xff09; 默认值约束&#xff08;DEFAULT&#xff09; 主键约束&#xff08;PRIMARY KEY&#xff09; 外键约束&#xff08;FOREIGN KEY&#xff09; 检查约束&#xff08;CHECK&…

LabVIEW机械产品几何精度质检系统

随着制造业的发展&#xff0c;对产品质量的要求越来越高&#xff0c;机械产品的几何精度成为衡量其品质的重要指标。为了提高检测效率和精度&#xff0c;开发了一套基于LabVIEW的几何精度质检系统&#xff0c;该系统不仅可以自动化地进行几何尺寸的测量&#xff0c;而且能实时分…

kafka 之 本地部署单机版

安装JDK 查看你选择的版本需要安装哪一个版本的jdk 网址 下载 JDK下载 注&#xff1a;如果网页不允许下载&#xff0c;使用wget命令下载即可&#xff0c;下载之后安装。 建议使用rpm安装&#xff0c;之后使用 update-alternatives --config java 控制当前环境使用Java的版…

SpringBoot 处理 @KafkaListener 消息

消息监听容器 1、KafkaMessageListenerContainer 由spring提供用于监听以及拉取消息&#xff0c;并将这些消息按指定格式转换后交给由KafkaListener注解的方法处理&#xff0c;相当于一个消费者&#xff1b; 看看其整体代码结构&#xff1a; 可以发现其入口方法为doStart(),…

2024-2025年最全的计算机软件毕业设计选题大全

博主介绍&#xff1a;✌全网粉丝5W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…

通过API接口获取数据:高效、灵活的数据交互之道

在数字化时代&#xff0c;数据已成为企业最宝贵的资产之一。企业和开发者对于数据的获取、处理和分析的需求日益增长。API&#xff08;应用程序编程接口&#xff09;接口作为连接不同系统和应用程序的桥梁&#xff0c;提供了一种高效、灵活的方式来获取和交换数据。本文将探讨为…

rust + bevy 实现小游戏 打包成wasm放在浏览器环境运行

游戏界面 代码地址 github WASM运行 rustup target install wasm32-unknown-unknown cargo install wasm-server-runner cargo run --target wasm32-unknown-unknowncargo install wasm-bindgen-cli cargo build --release --target wasm32-unknown-unknown wasm-bindgen --…

工厂模式(二):工厂方法模式

一、概念 工厂方法模式&#xff08;Factory Method&#xff09;&#xff0c;定义一个用于创建对象的接口&#xff0c;让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。从而使得系统更加灵活。客户端可以通过调用工厂方法来创建所需的产品&#xff0c;而不必…

Linux进程间通信——管道实现实战;深度学习,探索管道接口、特性、情况

前言&#xff1a;本节内容仍是管道&#xff0c; 上节内容我们学习了管道的原理。 这节内容将在原理的基础上&#xff0c; 讲解管道的编程&#xff0c; 特性&#xff0c;应用等等。 下面开始我们的学习吧。 ps&#xff1a;本节内容需要了解一些管道的原理&#xff0c; 希望友友们…

AIGC-初体验

线性分类 提问&#xff0c;目的试图让AI自动线性分类 A类&#xff1a;(10,21),&#xff08;3,7&#xff09;,(9,20&#xff09;(121,242) B类&#xff1a;(3,9),(5,11),(70,212),(11,34) 根据线性关系分类 请问 (100,300)&#xff0c;&#xff08;100&#xff0c;201&#xff…

nacos和eureka的区别详细讲解

​ 大家好&#xff0c;我是程序员小羊&#xff01; 前言&#xff1a; Nacos 和 Eureka 是两种服务注册与发现的组件&#xff0c;它们在微服务架构中扮演重要角色。两者虽然都是为了解决服务发现的问题&#xff0c;但在功能特性、架构、设计理念等方面有很多不同。以下是详细的…

【期末复习】软件项目管理

前言&#xff1a; 关于软件项目管理这一科目的重要期末考点&#xff0c;希望对你有帮助。 目录 质量管理可能遇到的问题 软件项目质量管理 软件项目风险管理 进度 题1 题2 题3 成本 题1 题2 题3 质量管理可能遇到的问题 (1)没有制定质量管理计划&#xff1a; (2)…

JMeter测试工具的简单了解

Apache JMeter 是一款开源的测试工具&#xff0c;主要用于对软件的性能进行测试。它最初被设计用于测试Web应用&#xff0c;但随着时间的推移&#xff0c;它的功能已经扩展到了其他测试领域。 可以应用到的场景 性能测试&#xff1a;评估应用程序在不同负载下的表现。负载测试…

初学代码指南(软2耶)

首先&#xff0c;很高兴又和大家见面了&#xff0c;本文章仅是作者的自我总结&#xff0c;是给笔者看的&#xff0c;所以读者在阅读时请抱着参考的心态&#xff0c;如果觉得可以借鉴的可以稍微借鉴一下&#xff0c;如果觉得笔者写了一坨shi&#xff0c;可以随便喷俺。 一.IDE …

音视频开发常见的开源项目汇总

FFmpeg 地址&#xff1a;https://ffmpeg.org/介绍&#xff1a;FFmpeg 是一个非常强大的开源多媒体框架&#xff0c;它可以用来处理视频和音频文件。它支持多种格式的转换、编码、解码、转码、流处理等。FFmpeg 包括了 libavformat、libavcodec、libavutil、libswscale、libpos…

✨机器学习笔记(四)—— 逻辑回归、决策边界、过拟合、正则化

Course1-Week3: https://github.com/kaieye/2022-Machine-Learning-Specialization/tree/main/Supervised%20Machine%20Learning%20Regression%20and%20Classification/week3机器学习笔记&#xff08;四&#xff09; 1️⃣逻辑回归&#xff08;logistic regression&#xff09;…