-
2020-12-24 18:37:29
spring-webmvc和spring-web有什么区别
前言-MVC 和web MVC ,SpringMVC和Spring web MVC的关系与区别?
- MVC 是一种架构分层模式
- web MVC 是指在 web 领域下实践的 MVC,因为 web 领域的视图层跟 native 应用的视图层不太能划等号
- Spring MVC 和 Spring Web MVC 是同一个东西,就是 Spring Framework 里的一个模块。在 Spring Framework 介绍页面 写的是 Spring MVC,然而点进去后具体的描述页面 使用 Spring Web MVC 来称呼
文档里有这么一句话:
The formal name “Spring Web MVC” comes from the name of its source module spring-webmvc but it is more commonly known as “Spring MVC”.
所以说正式名称叫 Spring Web MVC,不过大多数人都喜欢叫 Spring MVC。
区别
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>3.1.2.RELEASE</version> </dependency> vs <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>3.1.2.RELEASE</version> </dependency>
- spring-web 提供核心的HTTP集成,包括一些方便的Servlet过滤器,Spring HTTP
Invoker,与其他Web框架和HTTP技术(例如Hessian,Burlap)集成的基础结构,spring-web的依赖:
序列化技术 protobuf,gson,hession,
http 工具 httpclient,okhttp
netty 依赖
spring 框架依赖 spring-aop,spring-beans,spring-context,spring-core,spring-oxm
servlet 依赖 javax.servlet-api - spring-webmvc是Spring MVC的一个实现。spring-webmvc依赖spring- web,因此包括它会传递性增加spring-web。您不必spring-web显式添加。
如果您不使用Spring MVC,但想利用Spring支持的其他与Web相关的技术,则应该仅依赖spring-web。
stackoverflow参考:https://stackoverflow.com/questions/13533700/maven-dependency-spring-web-vs-spring-webmvc
工程结构差别
spring-web
spring-web提供核心的HTTP集成,包括一些方便的Servlet过滤器,Spring HTTP Invoker,用于与其他Web框架和HTTP技术集成的基础设施。
http(http协议的实现类)和web包(应用,上下文,会话,cookies,过滤器等等)
比如大家都熟悉的web.xml里的引入:<listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>
spring-web还提供 对远程调用和远程服务的支持。
spring-web-mvc
spring-mvc提供了基于spring的web的MVC模式,webmvc主要是增加了对spring MVC的支持,包括一些view层的核心封装,提供各前端技术及标签支持,restful协议、国际化等模块。
view层的核心封装,提供各前端技术及标签支持。
servlet包(各种view引擎:FreeMarker,Velocity,Jasper,Tiles,Grooy的配置;各种处理器;国际化i118n;mvc中的Controller的定义;基于cookies,会话的主题配置;各种HTML标签的对应类)更多相关内容 -
MVC实现的webApi接口
2019-03-14 10:20:291.使用.net Framework 4.5实现的webApi接口。 2. http get 请求,json格式返回 。 3.请求格式为:http://192.168.10.100/ParkApi/Index 4.返回格式为:{"code":1,"msg":"success"} -
MVC在Web系统中的模式与应用
2021-02-27 12:26:24这篇文章主要论述了如何在新的Web应用领域中使用设计模式和MVC架构。文章首先介绍了设计模式的概念和特点,以及MVC架构的设计思想,并分析了MVC架构中包含的几种主要的模式。然后根据Web应用系统的特点,就如何应用... -
基于Java Web MVC框架的学生成绩管理系统设计.pdf
2021-06-27 10:52:13基于Java Web MVC框架的学生成绩管理系统设计.pdf -
通信与网络中的MVC架构在Web应用系统的应用
2020-10-22 11:34:17和C/S结构相比,B/S结构受限于网络带宽不利于进行大数据量的统计分析,网络传输存在潜在的安全...因此,在开发Web应用系统时需要尽量遵循Web应用系统设计原则。 1 MVC描述的软件模型 MVC是三个单词的缩写,分别 -
.NET Web开发之.NET MVC框架介绍
2021-01-02 11:57:14任何应用程序都离不开数据,数据可以存储在数据库中、磁盘文件中,甚至内存中。Model就是对这些数据的抽象,不论数据采取何种存储形式,应用程序总是能够通过Model来对数据进行操作,而不必关心数据的存储形式。数据... -
ASP.NET MVC 4 Web编程
2018-05-28 11:47:34Jess Chadwick 专注于Web技术领域,独立软件技术顾问。超过10年的软件开发经验,就职的公司包括嵌入式设备创业公司、世界500强。ASPInsider、微软ASP.NET 领域的MVP。经常在新泽西的NJDOTNET做技术讲座。 Todd Snyder... -
多形态MVC式Web架构:完成实时响应
2021-02-25 18:36:451.在Web时代的前二十年,在用户视图及其现实或虚拟世界间的MVC可观察的事件驱动同步已经不再发挥什么作用了。2.近期的一些新进展使这一基础理念得以在Web开发社区复苏。3.dWMVC和pWMVC架构范式可以用于完成端到端... -
spring-mvc-validation:用于注释的高级验证技术的Spring MVC Web项目
2021-04-29 19:30:35用于注释的高级验证技术的Spring MVC Web项目 特征: 在这里,我们提供了一个用于理解Spring MVC Web应用程序的简单项目,并介绍了Spring-mvc-validation批注的高级概念。 在这里,通过带有批注的高级验证技术的... -
asp.net+Web+mvc4.0 EasyUI 最新 权限管理系统源码教程
2016-03-01 10:49:25Zephyr.Net 企业版是基于Asp.Net MVC4.0 + WebAPI + Knockout 技术,采用EasyUI为前台开发展示UI,Knockout主要负责前端的逻辑交互,再结合jQuery Ajax进行提交数据请求。 二、框架特色 1、基于 ASP.NET MVC4.0 + ... -
spring-webmvc-5.3.15-API文档-中英对照版.zip
2022-05-02 20:31:21赠送jar包:spring-webmvc-5.3.15.jar; 赠送原API文档:spring-webmvc-5.3.15-javadoc.jar; 赠送源代码:spring-webmvc-5.3.15-sources.jar; 赠送Maven依赖信息文件:spring-webmvc-5.3.15.pom; 包含翻译后的API... -
基于J2EE的Web应用的MVC架构实现_尹汉东
2018-04-02 20:09:30设计模式在当前的工程应用中越来越广泛 ,MVC 是软件开发中 的一种重 要的设计 模式 , J2EE 则是开 发高端企 业级应用的成熟技术体系。 在软件规模日益庞大的今天 , 这两种技术的结合为大型软件应用的开发提供了成功... -
spring-webmvc-5.0.10.RELEASE-API文档-中英对照版.zip
2022-04-19 21:38:09赠送jar包:spring-webmvc-5.0.10.RELEASE.jar; 赠送原API文档:spring-webmvc-5.0.10.RELEASE-javadoc.jar; 赠送源代码:spring-webmvc-5.0.10.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring-webmvc-... -
springfox-spring-webmvc-3.0.0-API文档-中英对照版.zip
2022-05-03 21:08:11赠送jar包:springfox-spring-webmvc-3.0.0.jar; 赠送原API文档:springfox-spring-webmvc-3.0.0-javadoc.jar; 赠送源代码:springfox-spring-webmvc-3.0.0-sources.jar; 赠送Maven依赖信息文件:springfox-... -
mvc-java-webapp:MVC Java Web 应用程序。 技术测试
2021-05-31 11:22:44MVC Java Web 应用程序。 技术测试 注意:如果我有更多时间,我想花更多时间研究 RX Java 技术,并对某些类(例如 View 或 ParameterFilter 类)进行更多单元测试。 要登录应用程序,您可以使用以下凭据 user1 ... -
MVC模式在Java Web开发中的应用及实现.pdf
2021-07-02 18:41:50MVC模式在Java Web开发中的应用及实现.pdf -
浅析MVC模式在WEB开发中的应用
2015-05-08 15:59:57随着Web的发展和功能的需要,...本文首先介绍了PHP语言的特点和开发流程的发展,然后简明扼要的阐述了MVC思想,最后以制作个人的Blog为例说明如何利用MVC思想进行PHP开发,并对其中的一些技术细节和难点做出了说明。 -
基于JAVA开发Web应用中MVC模式分析.pdf
2021-06-27 10:52:08基于JAVA开发Web应用中MVC模式分析.pdf -
spring-webmvc-4.3.20.RELEASE-API文档-中英对照版.zip
2022-04-07 22:54:37赠送jar包:spring-webmvc-4.3.20.RELEASE.jar 赠送原API文档:spring-webmvc-4.3.20.RELEASE-javadoc.jar 赠送源代码:spring-webmvc-4.3.20.RELEASE-sources.jar 包含翻译后的API文档:spring-webmvc-4.3.20.... -
基于MVC架构的Web应用系统设计
2020-10-26 19:18:27分析了MVC描述的软件模型,通过一个基于PHP语言并结合XML和XSL技术的MVC架构的设计实例讨论了MVC模式设计的方法。 -
WEB MVC简介
2018-06-02 16:33:08在web世界里,具体步骤如下: web浏览器发起请求。 web服务器接收请求,返回内容给web客户端,最后产生响应 web服务器处理完成后,返回内容给web客户端,客户端接收内容进行处理。 因此:都是Web客户端发起请求...1.web开发中的请求_响应模型:
在web世界里,具体步骤如下:- web浏览器发起请求。
- web服务器接收请求,返回内容给web客户端,最后产生响应
- web服务器处理完成后,返回内容给web客户端,客户端接收内容进行处理。
因此:都是Web客户端发起请求,Web服务器接收、处理并产生响应。
一般Web服务器是不能主动通知Web客户端更新内容。虽然现在有些技术如服务器推(如Comet)、还有现在的HTML5 websocket可以实现Web服务器主动通知Web客户端。到此我们了解了在web开发时的请求/响应模型,接下来我们看一下标准的MVC模型是什么。
2.标准的mvc模型概述
MVC模型:是一种架构型的模式,本身不引入新功能,只是帮助我们将开发的结构组织的更加合理,使展示与模型分离、流程控制逻辑、业务逻辑调用与展示逻辑分离。
首先让我们了解下MVC(Model-View-Controller)三元组的概念:Model(模型):数据模型,提供要展示的数据,因此包含数据和行为,可以认为是领域模型或JavaBean组件(包含数据和行为),不过现在一般都分离开来:Value Object(数据) 和 服务层(行为)。也就是模型提供了模型数据查询和模型数据的状态更新等功能,包括数据和业务。
View(视图):负责进行模型的展示,一般就是我们见到的用户界面,客户想看到的东西。
Controller(控制器):接收用户请求,委托给模型进行处理(状态改变),处理完毕后把返回的模型数据返回给视图,由视图负责展示。 也就是说控制器做了个调度员的工作。
3.webMVC概述
在Web MVC模式下,模型无法主动推数据给视图,如果用户想要视图更新,需要再发送一次请求(即请求-响应模型)。4.web端开发发展历史
CGI:(Common Gateway Interface)公共网关接口,一种在web服务端使用的脚本技术,使用C或Perl语言编写,用于接收web用户请求并处理,最后动态产生响应给用户,但每次请求将产生一个进程,重量级。Servlet:一种JavaEE web组件技术,是一种在服务器端执行的web组件,用于接收web用户请求并处理,最后动态产生响应给用户。但每次请求只产生一个线程(而且有线程池),轻量级。而且能利用许多JavaEE技术(如JDBC等)。本质就是在java代码里面 输出 html流。但表现逻辑、控制逻辑、业务逻辑调用混杂。
这种做法是绝对不可取的,控制逻辑、表现代码、业务逻辑对象调用混杂在一起,最大的问题是直接在Java代码里面输出Html,这样前端开发人员无法进行页面风格等的设计与修改,即使修改也是很麻烦,因此实际项目这种做法不可取。JSP:(Java Server Page):一种在服务器端执行的web组件,是一种运行在标准的HTML页面中嵌入脚本语言(现在只支持Java)的模板页面技术。本质就是在html代码中嵌入java代码。JSP最终还是会被编译为Servlet,只不过比纯Servlet开发页面更简单、方便。但表现逻辑、控制逻辑、业务逻辑调用还是混杂。
这种做法也是绝对不可取的,控制逻辑、表现代码、业务逻辑对象调用混杂在一起,但比直接在servlet里输出html要好一点,前端开发人员可以进行简单的页面风格等的设计与修改(但如果嵌入的java脚本太多也是很难修改的),因此实际项目这种做法不可取。
JSP本质还是Servlet,最终在运行时会生成一个Servlet(如tomcat,将在tomcat\work\Catalina\web应用名\org\apache\jsp下生成),但这种使得写html简单点,但仍是控制逻辑、表现代码、业务逻辑对象调用混杂在一起。
Model1:可以认为是JSP的增强版,可以认为是jsp+javabean
特点:使用标准动作,自动将请求参数封装为JavaBean组件;还必须使用java脚本执行控制逻辑。
此处我们可以看出,使用标准动作可以简化javabean的获取/创建,及将请求参数封装到javabean,再看一下Model1架构,
Model1架构中,JSP负责控制逻辑、表现逻辑、业务对象(javabean)的调用,只是比纯JSP简化了获取请求参数和封装请求参数。同样是不好的,在项目中应该严禁使用(或最多再demo里使用)。Model2:在JavaEE世界里,它可以认为就是Web MVC模型
Model2架构其实可以认为就是我们所说的Web MVC模型,只是控制器采用Servlet、模型采用JavaBean、视图采用JSP
具体代码事例如下:
从Model2架构可以看出,视图和模型分离了,控制逻辑和展示逻辑分离了。
但我们也看到严重的缺点:- 控制器:
- 控制逻辑可能比较复杂,其实我们可以按照规约,如请求参数submitFlag=toAdd,我们其实可以直接调用toAdd方法,来简化控制逻辑;而且每个模块基本需要一个控制器,造成控制逻辑可能很复杂;
- 请求参数到模型的封装比较麻烦,如果能交给框架来做这件事情,我们可以从中得到解放;
- 选择下一个视图,严重依赖Servlet API,这样很难或基本不可能更换视图;
- 给视图传输要展示的模型数据,使用Servlet API,更换视图技术也要一起更换,很麻烦。
模型:
- 此处模型使用JavaBean,可能造成JavaBean组件类很庞大,一般现在项目都是采用三层架构,而不采用JavaBean。
- 此处模型使用JavaBean,可能造成JavaBean组件类很庞大,一般现在项目都是采用三层架构,而不采用JavaBean。
视图:
- 现在被绑定在JSP,很难更换视图,比如Velocity、FreeMarker;比如我要支持Excel、PDF视图等等。
服务到工作者:Front Controller + Application Controller + Page Controller + Context
即,前端控制器+应用控制器+页面控制器(也有称其为动作)+上下文,也是Web MVC,只是责任更加明确,详情请参考《核心J2EE设计模式》和《企业应用架构模式》
运行流程如下:
职责:
Front Controller:前端控制器,负责为表现层提供统一访问点,从而避免Model2中出现的重复的控制逻辑(由前端控制器统一回调相应的功能方法,如前边的根据submitFlag=login转调login方法);并且可以为多个请求提供共用的逻辑(如准备上下文等等),将选择具体视图和具体的功能处理(如login里边封装请求参数到模型,并调用业务逻辑对象)分离。
Application Controller:应用控制器,前端控制器分离选择具体视图和具体的功能处理之后,需要有人来管理,应用控制器就是用来选择具体视图技术(视图的管理)和具体的功能处理(页面控制器/命令对象/动作管理),一种策略设计模式的应用,可以很容易的切换视图/页面控制器,相互不产生影响。
Page Controller(Command):页面控制器/动作/处理器:功能处理代码,收集参数、封装参数到模型,转调业务对象处理模型,返回逻辑视图名交给前端控制器(和具体的视图技术解耦),由前端控制器委托给应用控制器选择具体的视图来展示,可以是命令设计模式的实现。页面控制器也被称为处理器或动作。
Context:上下文,还记得Model2中为视图准备要展示的模型数据吗,我们直接放在request中(Servlet API相关),有了上下文之后,我们就可以将相关数据放置在上下文,从而与协议无关(如Servlet API)的访问/设置模型数据,一般通过ThreadLocal模式实现。
到此,我们回顾了整个web开发架构的发展历程,可能不同的web层框架在细节处理方面不同,但的目的是一样的:
干净的web表现层:
模型和视图的分离;
控制器中的控制逻辑与功能处理分离(收集并封装参数到模型对象、业务对象调用);
控制器中的视图选择与具体视图技术分离。
轻薄的web表现层:
做的事情越少越好,薄薄的,不应该包含无关代码;
只负责收集并组织参数到模型对象,启动业务对象的调用;
控制器只返回逻辑视图名并由相应的应用控制器来选择具体使用的视图策略;
尽量少使用框架特定API,保证容易测试。到此我们了解Web MVC的发展历程,接下来让我们了解下Spring MVC到底是什么、架构及来个HelloWorld了解下具体怎么使用吧。
-
MVC4web编程
2017-12-04 22:35:58ASP.NET MVC 4 Web编程 目录: 第1章:ASP.NET MVC基础 第2章:ASP.NET Web Form开发人员必读 第3章:使用数据 第4章:客户端开发 第5章:Web应用程序架构 第6章:使用AJAX提升网站体验 第7章:ASP.NET Web API 第8... -
精通Struts基于mvc的java web设计与开发
2018-07-23 09:54:38Struts是Apache软件基金会(ASF)赞助的一个开源项目。...它通过采用Java Servlet/JSP技术,实现了基于Java EE Web应用的Model-View-Controller(MVC)设计模式的应用框架,是MVC经典设计模式中的一个经典产品。 -
web-mvc技术汇总,多语言/多平台
2016-05-27 11:26:31 -
Java Web应用开发技术第5章 MVC架构模式.ppt
2020-02-05 15:16:17Java Web应用开发技术 本章导航 本章将介绍什么是MVC模式通过本章的学习将帮您解决如下几个主要问题 什么是模式 什么是MVC模式 MVC模式有哪几个重要组成部分每部分的功能是什么 MVC模式在 Java Web 开发中如何应用 *... -
Inflearn-Spring-MVC:[互联网讲座] Infron-Spring MVC第一卷,用于后端Web开发的核心技术(Younghan Kim)
2021-04-11 20:52:16Infron-Spring MVC第1卷核心技术(用于后端Web开发)(Younghan Kim) SSR,CSR SSR(服务器端渲染) HTML最终结果在服务器上创建并交付到Web浏览器 主要用于静态屏幕 相关技术:JSP,Thymeleaf CSR(客户端渲染... -
MVC+WebAPI+EasyUI+Knockout后台管理系统.zip
2019-09-22 23:04:39基于Asp.Net MVC4.0 + WebAPI + Knockout 技术,采用EasyUI为前台开发展示UI,Knockout主要负责前端的逻辑交互,再结合jQuery Ajax进行提交数据请求。 1、基于 ASP.NET MVC4.0 + WebAPI + EasyUI + Knockout 的架构...