Spring MVC框架详解(一)

2023-11-10

一、三层架构与MVC模型

  • 我们的开发架构一般都是基于两种形式,一种是C/S架构,也就是客户端/服务器架构,另一种是B/S架构,也就是浏览器/服务器架构。在JavaEE开发中,几乎都是基于B/S架构的开发。
  • 在B/S架构中,系统标准的三层架构包括:表现层业务层持久层

1. 三层架构

表现层:(web层)

  • 也就是我们常说的web层。它负责接收客户端的请求,向客户端响应结果,通常客户端使用HTTP协议请求web层,web层需要接收HTTP请求,完成HTTP响应。
  • 表现层包括展示层和控制层,其中控制层负责接收请求,展示层负责结果的展示。
  • 表现层依赖于业务层,接收到客户端请求一般会调用业务层进行业务处理,并将处理结果响应给客户端。
  • 表现层的设计一般都是使用MVC模型。(MVC是表现层的设计模型,和其他层没有关系)。

业务层:(service层)

  • 也就是我们常说的service层。它负责业务逻辑的处理,和我们开发项目的需求息息相关。web层依赖于业务层,但是业务层不依赖web层。
  • 业务层在业务处理时可能会依赖持久层,如果要对数据持久化需要保证事务一致性(也就是我们常说的事务应该放在业务层来控制)

持久层:(dao层)

  • 也就是我们常说的dao层。它负责数据持久化,包括数据层即数据库和数据库访问层,数据库是对数据进行持久化的载体,数据访问层是业务层和持久层交互的接口,业务层需要通过数据访问层将数据持久化到数据库中。通俗来讲,持久层就是和数据库交互,对数据库表进行增删改查的。

2. MVC模型

简介:

MVC模型的全名是Model-View-Controller,是模型(model)-视图(view)-控制器(controller)的缩写,是一种用于创建web应用程序表现层(web层)的模式

原理:

当浏览器向服务器发送请求的时候,请求首先到控制器(Servlet),控制器(Servlet)接收到请求以后,将请求中的数据封装到数据模型中(JavaBean对象)。此时,数据模型(JavaBean对象)可以到业务层调用相应的业务逻辑,当业务层执行完毕以后,将处理结果再次封装到数据模型(JavaBean对象)中。最后将数据模型中的数据通过视图(JSP或HTML页面)响应给浏览器并展示给用户。

描述:

  • Model(模型):通常指的是我们的数据模型。作用一般情况下用于封装数据(即JavaBean对象)。
  • View(视图):通常指的是我们的JSP或者HTML。作用一般情况下用于展示数据。通常视图是依据模型数据创建的。(即JSP或HTML页面
  • Controller(控制器):通常是应用程序中处理用户交互的部分。作用一般情况下用于处理程序逻辑。(即Servlet

 

二、SpringMVC框架

1. 简介

  • SpringMVC框架是一种基于Java的实现MVC设计模型的请求驱动类型的轻量级web框架,属于Spring FrameWork的后续产品,已经融合在Spring Web Flow里面。
  • SpringMVC框架已经成为目前主流的MVC框架之一,并且随着Spring3.0的发布,全面超越Struct2,或成为最优秀的MVC框架。
  • SpringMVC框架通过一套注解,让一个简单的Java类成为处理请求的控制器,而无需实现任何接口。同时它还支持RESTful编程风格的请求。

2.SpringMVC在三层架构的位置

3.SpringMVC框架与Struts2的优劣分析

共同点:

  • 它们都是表现层(web层)框架,都是基于MVC模型编写的。
  • 它们的底层都离不开Servlet。
  • 它们处理请求的机制都是一个核心控制器。

区别:

  • SpringMVC框架的入口是Servlet,而Struts2框架的入口是Filter
  • SpringMVC框架是基于方法设计的,而Struts2框架是基于类设计的,Struts2框架每次执行都会创建一个Action类,所以SpringMVC框架会稍微比Struts框架块些。
  • SpringMVC框架使用更加简介,同时还支持JSR303,处理Ajax的请求更方便。
  • Struts2框架的OGNL表达式使页面的开发效率相比SpringMVC框架更高些,但执行效率并没有比JSTL提升,尤其是Struts2的表单标签,远没有HTML执行效率高。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring MVC框架详解(一) 的相关文章

随机推荐

  • 1.荔枝派 zero(全志V3S)-编译及SD烧录

    上面是我创建的群聊 欢迎新朋友的加入 之前买了个荔枝派 全志的A3S芯片 折腾了两天 写一下编译和SD烧录的过程 目录 1 直接烧录镜像文件 2 uboot编译 3 kernel编译 4 rootfs编译 5 烧录 6 串口登录 1 直接烧
  • 如何解决没有指定在Windows运行或者它包含错误

    1 按快捷键win R 出现运行窗口 输入cmd 点击确定 2 出现此窗口 3 输入下列代码 for 1 in windir system32 dll do 32 exe s 1 注意空格 等待一段时间 停止后关闭窗口 重启电脑即可
  • import os总结

    转载自 https blog csdn net weixin 42427247 article details 89019940 作者 高小军 一 os path abspath path 返回path的绝对路径 eg os path ab
  • PHP 验证姓名是否正确

    PHP 中可以使用正则表达式来验证姓名的格式是否正确 下面是一个简单的例子 name 张三 pattern x 4e00 x 9fa5 2 4 u if preg match pattern name echo 姓名格式正确 else ec
  • zkeys系统生产服务器,Zkeys:低门槛、易操作的智能云管理系统

    ZKEYS系统是一个功能强大的智能化管理系统 目前国内最大的IDC业务管理系统之一 功能模块涵盖用户中心系统 财务系统 工单系统 备案系统和云服务器 服务托管器 虚拟主机等产品的弹性在线购买及及时开通 具有低门槛 易操作等特点 主要特性 1
  • 大屏数据可视化 B端UI设计后台PC网页UI设计U3D+可视化落地教程

    近年来 数据可视化是一个热度比较高的词 数据可视化大屏投放的需求也越来越多 数据可视化是指将数据以视觉形式来呈现 如图表或地图 以帮助人们了解这些数据的意义 数据可视化大屏是当前可视化领域的一项热门应用 通常可以分为信息展示类 数据分析类及
  • RuntimeError: cuda runtime error (30)问题解决

    已经不是第一次遇到这个问题 在此记录一下解决方式 虽然很暴力但是好用 应该还有其他解决方式 以后实验好用后再补充 出现该问题是因为cuda进入了休眠状态 所以程序运行出错 简单直接的解决方式是重启服务器完美解决 参考链接 https blo
  • 预测知识

    预测知识 预测模型变量重要性 可视化及论文撰写指南 目录 预测知识 预测模型变量重要性 可视化及论文撰写指南 变量重要性 模型可视化 论文撰写指南 参考资料 变量重要性 关于预测模型变量重要性 大家一定熟悉不过 但如下图所示 其展示上可有进
  • 计算机网络——网络层要点总结

    本文总结了计算机网络中网络层的相关知识 适合学习过计算机网络的人群快速复习 查找相关知识点并巩固 思维导图 基本概念 传输层 应用进程之间端到端的通信 路径设备透明 网络层 host之间的逻辑连接 虚拟 例如 路由路径 路径设备参与 网络层
  • 修改falcon的钉钉告警格式

    源码位置 open falcon falcon plus modules alarm cron builder go 调整格式 原始的SMS通知格式 几个通知方式都类似 所以就不全部列举 func BuildCommonSMSContent
  • python Matplotlib實現可視化

    Matplotlib matplotlib框架 matplotlib 的整體框架分爲三層 各層之間只能由上至下單向通信 分爲 Scripting 脚本 層 Artist 表現 層 Backend 後端 層 接下來對這三個層分別簡單的介紹一下
  • python考核试题及答案

    Python测试 总分 120 选择题 每题2分 共20分 1 下列哪个语句在Python中是非法的 B A x y z 1 B x y z 1 C x y y x D x y x x y 2 关于Python内存管理 下列说法错误的是 B
  • SARIMA时间序列模型预测城市房价数据

    SARIMA时间序列模型预测城市房价数据 数据清洗 文件中含有大量城市的房价数据 考虑到此次为学习性质的练习 为了节省数据处理的繁琐步骤 我截取了北京的2010 2021房价数据作为样例 并将价格的数据格式改为数值 去除多余的逗号 数据导入
  • 实现迷你版vue2的响应式核心原理代码

    vue2 的响应式核心原理代码 其实就只有几个模块 1 代理 Object defineProperty 2 依赖收集dep 收集所有监听页面数据的watcher实例 3 监听页面数据实例 watcher 4 观察者 Observer 实现
  • docker学习:容器互联-link

    我现在弄两个tomcat 分别是tomcat01 tomcat02 端口随机 随机端口 P 大写的P 小写的p要添加端口映射的 docker run d P name tomcat02 tomcat 我们想尝试直接通过名字来连接链接两个容器
  • Android studio文本控件的使用包含TextView控件、EditText控件,进行线性布局

    Android studio新建一个项目 修改XML如下 其中Activity名称为 MyControlText
  • typora中的图片传入到CSDN报错问题解决办法(详细步骤讲解)

    文章目录 typora中的图片传入到CSDN报错问题解决办法 一 报错问题描述 1 问题描述 2 原因分析 二 解决办法 1 软件介绍 2 阿里云oss 2 1 注册登录阿里云 2 2 购买对象存储oss 2 3 创建Buket 3 pic
  • 【AI外呼+RPA自动加微】,解锁企微新能力

    促销季临近 各类线上促销活动又拉开帷幕 多数商家意识到 在铺广告 做推广获客的同时 还可以利用好现有的用户数据 与客户建立更紧密的联系 激活客户进行二次转化 为了更加便于激活 运营客户 我们可以将客户引入另一个流量载体 企微私域 在使用平台
  • 微信小程序marquee

    https www jianshu com p 0ff03e5e942e 发现点问题 setdata方法放在create 里面获取不到真正的length长度 要放在attached 或者ready
  • Spring MVC框架详解(一)

    一 三层架构与MVC模型 我们的开发架构一般都是基于两种形式 一种是C S架构 也就是客户端 服务器架构 另一种是B S架构 也就是浏览器 服务器架构 在JavaEE开发中 几乎都是基于B S架构的开发 在B S架构中 系统标准的三层架构包