SpringMVC学习系列(1) 之 初识SpringMVC

本文介绍了作者从.NET MVC转向SpringMVC的过程,并详细解释了选择SpringMVC的原因。文章对比了Struts2与SpringMVC的特点,特别是SpringMVC基于注解的控制器,以及其高效简洁的开发方式。


1.前言:

与SpringMVC的结识源于个人之前想做一个微信公众账号的管理平台玩玩,既然要做就需要考虑平台的选择问题。由于我的朋友只有一台运行了Linux系统的虚拟主机,且上面还运行有他自己的一些论坛。找不到windows虚拟主机,且肯定不能换朋友主机的系统。刚开始时打算用mono把之前做的.Net MVC项目搭的框架运行一下看看能不能用,发现根本跑不起来(项目用了Spring.NET当时mono和Spring.NET还不兼容,Sping.NET论坛说是由于mono的反射实现机制的问题。好消息是最新的Spring.NET项目已经支持mono,虽然官网上说还有一些bug,但这相对于之前完全不能运行已经好太多了,相信以后会越来越好。详见SPRING-NET-MONO可能需要FQ,你懂的…)。

于是决定选择用java开发,最先开始看的是经典的SSH框架的一些资料,为此还特意买了一本书做参考,可没看多少就有疑问了,让我最不能接受的就是Struts2的一个action一个class的做法(评论中已经有朋友指出Struts2也可以实现多个Action方法的,非常感谢指正)。按照这种做法要实现一个对象的CURD基本操作就要4个class,而且java的一个class只能属于一个class文件,这样下来一个项目光action就要生成一堆class文件,而且文件里面只有一个action没有多少内容,太啰嗦了,感觉这样开发效率很低(以上感受仅是我当时看struts2是的感觉,如有不对的地方敬请批评指正),所以决定更换其它方式。恰好看到了Spring3的 Spring MVC的介绍,基于注解的controller,还有action的声明方式像极了.Net MVC,当即决定采用,于是便有了该系列文章。

 

约定:本系列所用的Spring版本为:spring-framework-3.2.5.RELEASE,Hibernate版本为hibernate-release-4.2.8.Final,采用Spring+Hibernate+Spring MVC的组合方式。

 

2.什么是Spring MVC:

Spring MVC属于SpringFrameWork的后续产品,它提供了构建 Web 应用程序的全功能 MVC 模块,与Struts2一样是一种优秀MVC框架,不同的是自Spring2.5引入了注解式controller及Spring 3以后的不断完善,使得采用Spring MVC框架开发结构清晰明了,效率大大提高。

 

3.注解式Spring MVC响应流程:

绘图1

 

4.重要的接口和类的简单说明:

DispatcherServlet:前端控制器,用于接收请求。

HandlerMapping接口:用于处理请求的映射。

DefaultAnnotationHandlerMapping:HandlerMapping接口的实现,用于把一个URL映射到具体的Controller类上。

HandlerAdapter接口:用于处理请求的映射。

AnnotationMethodHandlerAdapter:HandlerAdapter接口的试下,用于把一个URL映射到对应Controller类的某个方法上。

ViewResolver接口:用于解析View。

InternalResourceViewResolver:ViewResolver接口的实现,用于把ModelAndView的逻辑视图名解析为具体的View。

### SpringMVC学习路径:从入门到精通 #### 1. **基础知识准备** 在深入学习Spring MVC之前,建议先掌握Java基础以及Web开发的相关概念。这包括但不限于Servlet、JSP、HTTP协议等内容。这些技术构成了Spring MVC的基础架构。 - Java SE核心语法[^1] - Servlet API及其生命周期管理[^4] - JSP页面渲染机制[^3] #### 2. **初识Spring框架** 由于Spring MVC是Spring Framework的一部分,因此熟悉整个Spring生态系统的结构至关重要。重点在于理解IoC容器(控制反转)、依赖注入(DI)的概念及其实现方式。 - IoC/DI原理与实践应用[^1] - Bean定义和装配策略[^1] #### 3. **Spring MVC基本概念** 接下来进入Spring MVC的核心部分——其工作模式基于经典的Model-View-Controller设计模式。以下是几个重要知识点: - DispatcherServlet作为前端控制器的作用 - HandlerMapping如何匹配请求并分派给合适的处理器[^2] - ViewResolver负责解析逻辑视图名为实际物理视图的过程[^3] #### 4. **处理请求的具体实现** 了解了理论之后,动手尝试编写简单的Controller类来响应客户端发出的不同类型的HTTP请求是非常必要的环节。 ```java @Controller public class HelloController { @RequestMapping("/hello") public String sayHello(Model model){ model.addAttribute("message","Welcome to Spring MVC!"); return "greeting"; } } ``` 以上代码片段展示了一个典型的GET请求处理器方法。 #### 5. **数据绑定与验证** 为了使应用程序更加健壮,在接收外部输入前通常需要对其进行校验;同时也要考虑如何有效地将表单字段映射至内部对象属性之上。 - 数据绑定过程详解[^2] - 表单验证机制介绍[@Validated,@InitBinder等注解的使用][^2] #### 6. **异常处理** 构建稳定可靠的系统离不开良好的错误恢复能力。为此,Spring MVC提供了一系列工具帮助开发者优雅地捕获并反馈运行期间发生的各类问题。 - @ExceptionHandler标注的方法用于局部范围内的异常捕捉 - Global ExceptionHandler通过继承`HandlerExceptionResolver`接口达成全局级别的解决方案[^2] #### 7. **国际化支持(i18n)** 针对全球化需求场景下,能够根据不同用户的偏好显示相应语言版本的内容显得尤为重要。 - MessageSource抽象类的功能概述 - LocaleChangeInterceptor拦截器切换当前线程Locale实例的工作流程 #### 8. **RESTful风格API开发** 随着微服务架构日益流行,创建遵循REST原则的服务端点成为现代软件工程不可或缺的一环。 - ResponseEntity<T>类型的优势所在 - HttpEntity<?>参数传递复杂媒体类型的数据样例[^2] #### 9. **性能优化技巧** 最后阶段可以探索一些提升效率的技术手段,比如缓存策略设置、异步操作启用等方面的知识点。 - Cacheable注解读写缓存规则配置 - DeferredResult延迟计算结果返回时机的选择依据[^2]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值