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) 之 初识springmvc的内容。