JavaWeb:JavaWeb技术架构演进

news2024/11/23 1:58:46

Java Web,是用 Java 技术来解决相关web互联网领域的技术栈。web 包括:web 服务端和 web 客户端两部分。Java 在客户端的应用有 Java Applet,不过使用得很少,Java 在服务器端的应用非常的丰富,比如 Servlet,JSP、第三方框架等等。Java 技术对 Web 领域的发展注入了强大的动力。

本篇内容包括:JavaWeb 简介、JavaWeb 技术架构演进的各个阶段,即 JavaWeb-Servlet 阶段,JavaWeb-MVC 阶段(SSM/SSH)以及 JavaWeb-SpringBoot 阶段 的相关内容!


文章目录

    • 一、JavaWeb 简介
    • 二、JavaWeb-Servlet 阶段
        • 1、JavaWeb-Servlet 阶段
        • 2、JSP+JavaBean+Servlet
    • 三、JavaWeb-MVC 阶段
        • 1、MVC 模式概述
        • 2、MVC 模式优点
        • 3、MVP 模式
        • 4、MVVC 模式
    • 四、JavaWeb-SSH/SSM 阶段
        • 1、SSH 框架
        • 2、SSM 框架
    • 五、JavaWeb-SpringBoot 阶段


一、JavaWeb 简介

Java Web,是用 Java 技术来解决相关web互联网领域的技术栈。web 包括:web 服务端和 web 客户端两部分。Java 在客户端的应用有 Java Applet,不过使用得很少,Java 在服务器端的应用非常的丰富,比如 Servlet,JSP、第三方框架等等。Java 技术对 Web 领域的发展注入了强大的动力。


二、JavaWeb-Servlet 阶段

1、JavaWeb-Servlet 阶段

在 Web 应用处于最初期时,主要用于浏览静态 Html 页面,浏览器通过请求向 Http 服务器端(比如 Apache、Nginx)获取并解析 Html 页面。

直到后来,随着互联网技术的发展,需要开始可以提供一些扩展机制能够让 HTTP 服务器调用服务端程序,以此来使用户通过一些交互操作,来获取动态结果。而 Sun 公司做出的改变,是推出了 Servlet 技术。

我们可以把 Java 中的 Servlet 理解为一个可以运行在服务器上的 Java 程序,但是这个 Java 程序,并不能独立运行(因为 Servlet 没有 main 方法),需要部署在相应的 Servlet 容器中,比如 Tomcat 和 Jetty。

2、JSP+JavaBean+Servlet

Java Servlet 出现后,最主要的一个使用场景就是:「Servlet + JavaBean + JSP」 的方式.

在 Java Servlet 出现以前,Java 操控网页的方式如下:

  1. JSP 方式:JSP 相当于在 Html 页面中加上 Java 代码,一般在 <body> 标签中放入主要代码。那时候的 Web 开发基本都是在 JSP+JavaBean 上完成的。更有甚着直接把页面、逻辑、数据处理全都写在 JSP 上,但这种方式开发的项目代码不仅乱、而且耦合性相当高,造成项目难以维护。
  2. JSP+JavaBean 方式:相较于数据处理全都写在 JSP 上,JSP+JavaBean 的方式在一定程度上解耦了,但 JSP 依旧要负责页面控制以及请求与响应的处理,职责不单一。耦合度依旧比较高,高度耦合的结果是 JSP代码 十分复杂混乱,后期维护很困难。

在 Java Servlet 出现以后,,Java 操控网页的方式如下:

  1. JSP+JavaBean+Servlet 方式:这种方式下 JSP 只需负责页面控制,而数据的验证则有 Servlet 来承担,JavaBean 负责具体的业务逻辑与数据处理、封装以及和数据库交互等。
image-20221113233647391

Ps:在此时,JSP+JavaBean+Servlet 这种模式上已经开始有点 MVC 的影子了,但是这种模式还不能称之为一个比较完善的 MVC 设计模式。但这种模式相对于之前的两种模式(JSP、JSP+JavaBean)来说分工更明确,抽取出了 Servlet 层,体现了一个简单的分层思想。


三、JavaWeb-MVC 阶段

1、MVC 模式概述

MVC(Model–view–controller)模式,最早由 Trygve Reenskaug 在 1978 年提出,它是软件工程中的一种软件架构模式,其把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。MVC模式的目的是实现一种动态的程式设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。除此之外,此模式透过对复杂度的简化,使程序结构更加直观。软件系统透过对自身基本部分分离的同时也赋予了各个基本部分应有的功能。

  • 模型(Model):程序员编写程序应有的功能(实现算法等等)、数据库专家进行数据管理和数据库设计(可以实现具体的功能)。
  • 视图(View):界面设计人员进行图形界面设计。
  • 控制器(Controller):负责转发请求,对请求进行处理。
image-20221113234114113

MVC 模式各部分之间的通信方式:View 传送指令到 Controller ,Controller 完成业务逻辑后,要求 Model 改变状态,Model 将新的数据发送到 View,用户得到反馈,所有通信都是单向的。

Ps:接受用户指令时,MVC 可以分成两种方式。一种是通过 View 接受指令,传递给 Controlle、另一种是直接通过 Controlle 接受指令。一般在实际项目中往往采用更灵活的方式,通常会把这两种方式结合在一起。

2、MVC 模式优点

  • 在 MVC 设计模式中, Model 响应用户请求并返回响应数据,View 负责格式化数据并把它们呈现给用户,业务逻辑和表示层分离,同一个 Model 可以被不同的 View 重用,所以大大提高了代码的可重用性。
  • MVC 模式的三个模块相互独立,改变其中一个不会影响其他两个,所以依据这种设计思想能构造良好的少互扰性的构件。
  • Controller 提高了应用程序的灵活性和可配置性。

3、MVP 模式

MVP(Model View Presenter)是由 MVC 演变而来,它和 MVC 的相同之处在于:Controller / Presente 都是负责业务逻辑,Model 管理数据,View 负责显示。

不过在 MVP 中 View 并不直接与 Model 交互,它们之间的通信是通过 Presenter (MVC 中的 Controller)来进行的,即使用 Presenter 对视图和模型进行了解耦,让它们彼此都对对方一无所知,沟通都通过 Presenter 进行。

mvp

  • Model层:模型(用于封装业务逻辑相关的数据以及对数据的操纵)
  • View层:视图(渲染图形化界面,也就是所谓的UI界面)
  • Presenter层:控制器(M和V之间的连接器,主要处理业务逻辑,包括显示数据,界面跳转,管理页面生命周期等)

4、MVVC 模式

MVVM 全名为 Model View ViewModel ,早在 2004 年,Martin Fowler 发表了一篇名为 Presentation Model (以下简称为 PM 模式)的文章,PM 模式与 MVP 比较相似,它从视图层中分离了行为和状态;PM 模式中创建了一个视图的抽象,叫做 Presentation Model,而视图也成为了这个模型的『渲染』结果。MVVM 与 Martin Fowler 所说的 PM 模式其实是完全相同的,Fowler 提出的 PM 模式是一种与平台无关的创建视图抽象的方法,而 Gossman 的 MVVM 是专门用于 WPF 框架来简化用户界面的创建的模式;我们可以认为 MVVM 是在 WPF 平台上对于 PM 模式的实现。

Ps:可以看到,从 MVC->MVP->MVVM,就像一个打怪升级的过程,后者解决了前者遗留的问题,把前者的缺点优化成了优点。同样的 Demo 功能,代码从最开始的一堆文件,优化成了最后只需要 20 几行代码就完成


四、JavaWeb-SSH/SSM 阶段

在 MVC(Model View Controller)思想开始成为主流是,JavaWeb 出现了两种最火爆的框架模式:SSH 框架/SSM 框架。

1、SSH 框架

SSH是 struts+spring+hibernate 的一个集成框架,是 16 年之前较为流行的一种 Web 应用程序开源框架。

集成 SSH 框架的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层,以帮助开发人员在短期内搭建结构清晰、可复用性好、维护方便的 Web 应用程序。

  • Struts 作为系统的整体基础架构,负责 MVC 的分离,在 Struts 框架的模型部分,控制业务跳转;
  • Hibernate 框架对持久层提供支持;
  • Spring 做管理,管理 struts 和 hibernate。

应用程序被分割成这三大部分之后,各自处理自己的任务。视图层通过提取用户的输入信息,提交到控制器之后,控制器根据某种选择来决定这个请求交由给模型层来处理,模型层根据业务逻辑的代码处理用户请求并返回数据,并最终用视图层展示给用户。

2、SSM 框架

SSM(Spring+SpringMVC+MyBatis)框架集由 Spring、MyBatis 两个开源框架整合而成,其中 SpringMVC 是 Spring 中的部分内容,常作为数据源较简单的 Web 项目的框架。

# Spring

Spring 就像是整个项目中装配 Bean 的大工厂,在配置文件中可以指定使用特定的参数去调用实体类的构造方法来实例化对象。也可以称之为项目中的粘合剂。

Spring 的核心思想是 IoC(控制反转),即不再需要程序员去显式地 new 一个对象,而是让 Spring 框架帮你来完成这一切。

# SpringMVC

SpringMVC 在项目中拦截用户请求,它的核心 Servlet 即 DispatcherServlet 承担中介或是前台这样的职责,将用户请求通过 HandlerMapping 去匹配 Controller,Controller 就是具体对应请求所执行的操作。SpringMVC 相当于 SSH 框架中 struts。

# Mybatis

Mybatis 是对 jdbc 的封装,它让数据库底层操作变的透明。Mybatis 的操作都是围绕一个 sqlSessionFactory 实例展开的。mybatis通 过配置文件关联到各实体类的 Mapper 文件,Mapper 文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过 sqlSessionFactory 拿到一个 sqlSession,再执行 Sql 命令。

页面发送请求给控制器,控制器调用业务层处理逻辑,逻辑层向持久层发送请求,持久层与数据库交互,后将结果返回给业务层,业务层将处理逻辑发送给控制器,控制器再调用视图展现数据。


五、JavaWeb-SpringBoot 阶段

SpringBoot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,SpringBoot 致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。

SpringBoot

SpringBoot 特点:

  • 可以创建独立的 Spring 应用程序
  • 嵌入的 Tomcat,无需部署 WAR 文件
  • 简化 Maven 配置
  • 自动配置 Spring
  • 提供生产就绪型功能,如指标,健康检查和外部配置
  • 绝对没有代码生成以及不要求配置 XML

Ps:SpringBoot 虽然目的是为了简化 Spring,似乎看起来无需去学习 Spring 的繁琐配置,但是如果没有忍受过Spring的繁琐配置,没有经历过架构模式的演进以及 JavaWeb 基础的话,在使用SpringBoot 的过程中就容易出现没有遇到过的错误,也不知道如何去解决。

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

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

相关文章

【MySQL数据库笔记 - 进阶篇】(四)视图/存储过程/触发器

✍个人博客&#xff1a;https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 &#x1f4da;专栏地址&#xff1a;暂定 &#x1f4dd;视频地址&#xff1a;黑马程序员 MySQL数据库入门到精通 &#x1f4e3;专栏定位&#xff1a;这个专栏我将会整理 B 站黑马程序员的 MySQL…

将多张图片制作gif

如何将多张图片制作gif&#xff1f;gif其实也是一种比较常见的图片格式&#xff0c;不过gif和其它图片有很大区别&#xff0c;gif是一种动态图片&#xff0c;相信很多小伙伴都知道。我们每天几乎也会看到或者使用到gif动图&#xff0c;有些gif动图是由几张静态的普通图片合并而…

深入理解java虚拟机-1.自动内存管理

文章目录1、自动内存管理1.1 Java内存区域与内存溢出异常1.1.1 运行时数据区域程序计数器程序计数器为什么是私有的?java虚拟机栈本地方法栈虚拟机栈和本地方法栈为什么是私有的?Java堆创建的对象一定会放在堆中吗&#xff1f;方法区运行时常量池直接内存1.1.2 HotSpot虚拟机…

渗透测试之信息收集

信息收集1.域名信息收集1.1.whois查询1.1.1.whois解释1.1.2.whois收集  1.1.2.1.在线网站查询  1.1.2.2.工具查询1.2.反查1.3.备案信息查询1.3.1.备案信息收集1.4.子域名收集1.4.1.子域名解释1.4.2.子域名收集  1.4.2.1.在线网站收集  1.4.2.2.工具收集  1.4.2.3.Goo…

【教学类-13-03】20221118《数字色块图5*7*8-A4横板-横切》(大班主题《》)

效果展示&#xff08;一张8个图&#xff0c;对半横切&#xff08; 打印效果图、中间剪开成2分&#xff08;白色废纸&#xff09; 背景需求&#xff1a; 前期中3班制作5*7 *9张数字图&#xff0c;幼儿找出数字的人数更多 我还希望在大班进行数字图涂色练习。为了增加难度&#…

Wireshark TS | 访问网页失败

前言 访问网页失败也是日常比较常见的问题之一&#xff0c;导致问题的原因可能有很多种&#xff0c;像是客户端、浏览器、服务器或者网络等等&#xff0c;自然具体问题得具体分析。本篇以一个实际案例来说明下 TCP 连接相关的问题&#xff0c;该数据包仍然来自于 Wireshark sh…

视频m4v怎么转换成mp4?

在平时我们所使用的视频格式中除了常见的mp4&#xff0c;还有几十种不同的格式种类&#xff0c;不同的视频格式适用不同的播放设备&#xff0c;同时在画质&#xff0c;体积&#xff0c;编码&#xff0c;兼容性等方面都各具特色有所区别。其中m4v格式的视频就是适用于苹果系统的…

这波服装设计作品对女性美的诠释,十分到位

女性是温柔的、美丽的&#xff0c;多样的&#xff0c;莱佛士学生Xu Xinyi作品《Femininity&Softness》便是围绕女性展开创作。而Xinyi的作品想要传达的是&#xff1a;女性不应该被物化&#xff0c;她们是美丽且具有多样性的。 莱佛士服装设计专业学生作品在设计中&#xff…

海外直播公会Tik Tok,蓝海项目官方火热招募中

时过境迁&#xff0c;国内营销越来越成熟&#xff0c;国内公会(MCN机构)开始出现严重内卷。2022年国内公会/MCN公司已有40000多家;国内公会发展成熟&#xff0c;头部主播形成市场垄断;主播招墓难;孵化主播成本高。找她&#xff08;HS3873&#xff09;快速拿官方后台 有多少国内…

最短路径条数

在一个m行n列的网格中&#xff0c;每个网格的各边的长度均相等&#xff0c;求由A(x1,y1)点到达B(x2,y2)点的最短路径条数&#xff0c;其中1<m,n<30。输入保证x2>x1,y2>y1 如有下图网格&#xff0c;起点和终点分别是A(1,1),B&#xff08;2&#xff0c;3&#xff09;…

MySQL8.0优化 - 事务的状态

文章目录学习资料事务的状态活动的&#xff08;active&#xff09;部分提交的&#xff08;partially committed&#xff09;失败的&#xff08;failed&#xff09;中止的&#xff08;aborted&#xff09;提交的&#xff08;committed&#xff09;学习资料 【MySQL数据库教程天…

Pandas知识点-读写Excel最全参数总结(收藏)

Pandas知识点-读写Excel最全参数总结&#xff08;收藏&#xff09; pandas文件读写工具汇总 pandas中的文件读写工具由一组read的函数&#xff08;执行Input&#xff09;和一组write的对象方法&#xff08;执行Output&#xff09;组成&#xff0c;具体见下表。 本文总结最常用…

指纹识别系统设计(VC++)

目 录 摘 要 I Abstract II 1绪论 1 1.1选题背景及意义 1 1.2研究现状 2 1.3研究主要内容 2 2技术介绍 3 2.1软件环境 3 2.1.1 C的产生和发展以及特点简介 3 2.1.2 Visual C6.0简介及其优点 5 2.2硬件环境 5 3指纹识别系统需求分析 6 3.1业务需求分析 6 3.2功能需求分析 6 3.3性…

四招教你样式化界面组件KendoReact,让应用程序主题更个性化

Kendo UI致力于新的开发&#xff0c;来满足不断变化的需求&#xff0c;通过React框架的Kendo UI JavaScript封装来支持React Javascript框架。Kendo UI for React能够为客户提供更好的用户体验&#xff0c;并且能够更快地构建更好的应用程序。 开发人员在应用程序主题色的选择…

省重点实验室成果转化:24h在线的专业数字朋友,不用欠人情的网上解答神器~

数据解决大师 一个适合所有人的 数据问题咨询小程序 海量数据如何安全储存&#xff1f; 电脑系统崩溃&#xff0c;关键文档丢失怎么办&#xff1f; 手机被格式化&#xff0c;视频文档等数据如何恢复&#xff1f; 毕业论文遭恶意破坏&#xff0c;如何操作能将损失降至最低&…

Java Final关键字使用

Final关键字 final可以修饰类, 属性, 方法和局部变量 在某些情况下程序员可能有以下需求&#xff0c;就会使用到final: 1)当不希望类被继承时&#xff0c;可以用final修饰. 2)当不希望父类的某个方法被子类覆盖/重写(override)时&#xff0c;可以用final关键字修饰。[访问修饰…

谷粒学院——Day06【整合阿里云OSS、EasyExcel技术实现Excel导入分类】

阿里云存储OSS 一、对象存储OSS 1. 开通“对象存储OSS”服务 阿里云&#xff1a;https://www.aliyun.com/申请阿里云账号实名认证开通“对象存储OSS”服务进入管理控制台 2. 创建Bucket 选择&#xff1a;标准存储、公共读、不开通。 3.上传默认头像 4. 创建RAM子用户 二、…

如何手写一个单向链表?看这里

一. 问题展现 通常我们在大多数的面试中&#xff0c;遇到关于集合的问题都是比较多的。一般情况下&#xff0c;许多面试官通常都会问我们关于Set集合和Map集合的相关知识点&#xff0c;并对此进行重重陷阱的布置&#xff0c;此时很多面试者往往就很容易被带到面试官挖好的陷阱…

netstat命令详解

netstat命令详情一、前言二、netstat查看端口命令三、显示每个协议的统计信息四、显示核心路由信息五、netstat的其他参数一、前言 个人主页: ζ小菜鸡大家好我是ζ小菜鸡&#xff0c;小伙伴们&#xff0c;让我们一起来学习netstat命令使用&#xff0c;netstat命令是一个监控TC…

echarts疑难杂症

echarts疑难杂症1.调整柱状图、饼图的大小2.嵌套饼图且颜色保持一致3.并排展示饼图且中间展示文字4.折线图&#xff08;柱状图&#xff09;双y轴5.使用echarts56.图形不展示的问题1.调整柱状图、饼图的大小 //柱状图主要根据grid属性中的top/bottom/left/right属性调整大小 le…