SpringMVC【入门篇】
1. 摘要
本文旨在读者能通过本文知道SpringMVC是什么、干什么用的,在此基础上为了让读者能”知其然知其所以然”,还会介绍SpringMVC执行原理流程是怎么的,为的是让读者能对SpringMVC有更加深刻的认识和理解,在开发中能顺心应手,最后再通过一个简单的入门案例实现SpringMVC的功能,让读者切身感受下SpringMVC在项目中的作用。
2. SpringMVC概述
2.1. 什么是SpringMVC
SpringMVC就是一个Spring内置的MVC框架。
MVC框架,它解决WEB开发中常见的问题(参数接收、文件上传、表单验证、国际化等等),而且使用简单,与Spring无缝集成。支持 RESTful风格的URL请求。
采用了松散耦合可插拔组件结构,比其他 MVC 框架更具扩展性和灵活性。
2.2. SpringMVC的作用
MVC模式(Model-View-Controller):解决页面代码和后台代码的分离。
3. SpringMVC原理
在没有使用SpringMVC之前我们都是使用Servlet在做Web开发。但是使用Servlet开发在接收请求参数,数据共享,页面跳转等操作相对比较复杂。servlet是java进行web开发的标准,既然springMVC是对servlet的封装,那么很显然SpringMVC底层就是Servlet,SpringMVC就是对Servlet进行深层次的封装。
3.1. 回顾MVC模式
--什么是mvc模式?
MVC分别是:模型model(javabean)、视图view(jsp/img)、控制器Controller(Action/servlet)。
C存在的目的就是为了保证M和V的一致性,当M发生改变时,C可以把M中的新内容更新到V中。
3.1.1. 原始MVC 模式
MVC模式最早使用在CS 架构(20世纪70+年代)
下面为原始的mvc模式:

PS:目前web应用中,99%的项目都会使用mvc模式开发。
3.1.2. WEB开发的MVC
WEB开发从20世纪90+年代开始使用改进的MVC模式。在最原始的MVC上有一些改进
将model更广泛的使用,这样会比原始的mvc好多了。对MVC进行改进的主要是一些优秀的mvc框架,如Struts2,SpringMVC。
可以说,一个WEB项目如果缺少了MVC模式,那无异于一个人缺少了一颗有趣、阳光、乐光的心灵一样。

3.2. SpringMVC执行流程和原理

--SpringMVC执行流程:
--涉及组件分析:
--根据以上分析,SpringMVC需要程序员完成的工作有三个:
【1】配置前端控制器DispatcherServlet。
【2】开发后端控制器Handler/Controller。
【3】开发视图View。
接下来的入门案例,我们尝试只完成三个工作,看下能不能实现SpringMVC的功能。
4. 入门案例
4.1. 项目准备
4.1.1. 创建Maven项目(打包方式为war包)

4.1.2. 添加spring-webmvc依赖
webmvc依赖包含beans、context、core、expression、commons-logging、aop、web、webmvc,换言之导入一个webmvc依赖,就间接导入了启动mvc框架的所有依赖。
--web:spring对web项目的支持。
--webmvc:SpringMVC核心包。

4.1.3. 添加servlet依赖
因为springmvc底层还是servlet,所以还必须添加serlvet依赖。
4.2. 开发后端控制器Controller(与以前servlet类似)
4.3. 创建springmvc.xml配置文件
在src/main/resources/目录下创建springmvc.xml配置文件,并配置HelloController。
4.6. 启动项目
添加一个Tomcat服务器并部署项目若不清楚,参考:
部署完项目之后,启动服务器。
4.7. 访问项目(使用PostMan)

5. 小结
通过入门测试,我们确实完成三个工作:配置前端控制器、开发后端控制器、开发视图,就能通过浏览器或者测试工具(PostMan)访问我们的项目,即通过SpringMVC实现了MVC模式。但是通过XML配置的方式有一个问题:servlet的uri配置和serlvet的java代码是分开的,试想一下,如果servlet有几十个,上百个,那么我们需要定位serlvet对应的uri是不是要去配置文件里面逐个排查?这就很影响我们的开发效率了,特别是出现bug之后,本来心情就不愉快了,还要逐个逐个的排查,我们的心态会崩的,此时就需要使用springmvc另外一种开发模式:纯注解开发,来解决这个问题。
详见:
原文转载:https://zhuanlan.zhihu.com/p/100723581
__EOF__

本文链接:https://www.cnblogs.com/dusucyy/p/16384208.html
关于博主:编程小萌新一名,希望从今天开始慢慢提高,一步步走向技术的高峰!
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?