springMVC框架(二)---springMVC框架高级开发
首先在了解这个问题的时候我们需要明白什么是MVC,在前一篇提及的各种组件以及响应是如何的?
1.什么是springMVC?
springMVC全名Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring Web MVC也是要简化我们日常Web开发的。有的朋友是直接上手学的框架可能并没有感受到框架真正的好处,这里我打一个比方:一个工厂在加工一样东西的时候,需要进行材料采购、打磨、精加工。这里有三个工人,一个负责采购、打磨,一个又负责打磨、精加工,最后一个又负责采购、精加工。这里我们就会发现问题了,当我们最后产品出来的时候出问题了,那我们找谁,是那一块的问题呢?如果这三个人分别负责采购、打磨、精加工,我们会发现我们就会发现问题就很好发现了,这个分工的过程我们也可以看做解耦的过程。springMVC就相当于我们的解耦工具web层进行职责解耦,简化我们的开发。
Spring Web MVC也是服务到工作者模式的实现,但进行可优化。前端控制器是DispatcherServlet;
应用控制器其实拆为处理器映射器(Handler Mapping)进行处理器管理和视图解析器(View Resolver)进行视图管理;页面控制器/动作/处理器为Controller接口(仅包含ModelAndView handleRequest(request, response)
方法)的实现(也可以是任何的POJO类);支持本地化(Locale)解析、主题(Theme)解析及文件上传等;提供了非常灵活的数据验证、格式化和数据绑定机制;提供了强大的约定大于配置(惯例优先原则)的契约式编程支持。约定大于配置这句话很关键一定要记清楚。
2.springMVC能够为我们的开发带来怎样的好处?
√让我们能非常简单的设计出干净的Web层和薄薄的Web层;
√天生与Spring框架集成(如IOC容器、AOP等);--->IOC(iInversion of Control):控制反转;AOP(Aspect Oriented Programming)切面编程
√提供强大的约定大于配置的契约式编程支持;
√能简单的进行Web层的单元测试;
√支持灵活的URL到页面控制器的映射;
√非常容易与其他视图技术集成,如Velocity、FreeMarker等等,因为模型数据不放在特定的API里,而是放在一个Model里(Map
数据结构实现,因此很容易被其他框架使用);
√非常灵活的数据验证、格式化和数据绑定机制,能使用任何对象进行数据绑定,不必实现特定框架的API;
√提供一套强大的JSP标签库,简化JSP开发;
√支持灵活的本地化、主题等解析;
√更加简单的异常处理;
√对静态资源的支持;
√支持Restful风格。
3.springMVC的架构(在前一篇博客有一个简略的图)
可以结合前一篇博客的图好好的揣摩一下springMVC在MVC设计模式中的作用。如果有朋友不明白可以和我联系。
4.关联jar包部分
我想有朋友会问jar包部分的问题,我就把jar包给贴出来,好像myeclipse中自带,或者用Maven的同学可以直接写到配置文件里去拿包。这里要说的是这些spring的包均需要是3.10以后的版本否则没办法支持springMVC。
spring-context-3.1.0.RELEASE.jar
spring-aop-3.1.0.RELEASE.jar
aopalliance-1.0.jar
spring-beans-3.1.0.RELEASE.jar
pring-core-3.1.0.RELEASE.jar
spring-expression-3.1.0.RELEASE.jar
spring-asm-3.1.0.RELEASE.jar
spring-webmvc-3.1.0.RELEASE.jar
spring-context-support-3.1.0.RELEASE.jar
spring-web-3.1.0.RELEASE.jar
aspectjrt-1.6.9.jar
slf4j-api-1.5.10.jar
jcl-over-slf4j-1.5.10.jar
slf4j-log4j12-1.5.10.jar
log4j-1.2.15.jar
javax.inject-1.jar
servlet-api-2.5.jar
jsp-api-2.1.jar
jstl-1.2.jar
junit-4.7.jar
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现