springmvc详解及demo的搭建

来源:互联网 发布:spss输入数据 编辑:程序博客网 时间:2024/06/05 22:50

这是本人第一次写博客。出于两个目的:一是为了积累总结知识,二是希望自己能在写博客的过程中逼自己去求甚解。希望自己能快速成长起来。

相信很多人和我一样,在平时编写代码时无数次的用到了spring mvc框架,但是说到了其中的细节,说到了如何去搭建一个spring mvc的框架。应该很多人就摸不着头脑,就说不出个所以然了把? 那今天我就通过这篇博客,总结一下我对spring mvc的理解及搭建一个spring mvc框架的过程。

一、MVC框架
说到spring mvc不得不先提一下mvc框架。相信在你学习系统分析与设计方法的时候,老师无数次强调了MVC模式与三层架构的区别了吧?今天在这里不重点讨论三层架构了,来重点看一下MVC模式吧。下面是一张mvc在B/S系统下应用的图解。(看图应该比看码的字有意思吧?哈哈)
这里写图片描述

二、springmvc架构原理分析
OK,上面已经看到了MVC模式的基本原理了,那你现在肯定想springmvc框架又是如何具体实现上述模式的呢。那我们二话不说,我先上图,然后我会在下面对每一步做出解释。
这里写图片描述

步骤解释:
1、用户发起请求到前端控制器(DispatcherServlet)

2、前端控制器请求HandlerMapping查找Handler(可根据xml配置、注解进行查找)
3、处理器映射器HandlerMapping向前端返回Handler
4、前端控制器调用处理器适配器去执行Handler

5、处理器适配器执行Handler

6、Handler处理器返回ModelAndView

7、处理器适配器向前端控制器返回ModelAndView

    (ModelAndView是springmvc框架的一个底层对象,包括Model和View)

8、前端控制器请求视图解析器去进行视图解析

    根据逻辑视图名解析成真正的视图(jsp)

9、视图解析器向前端控制器返回View

10、前端控制器将模型数据(在ModelAndView对象中)填充到request域

11前端控制器向用户响应结果

接下来我们重点看几个这套框架中的组件
1、前端控制器 DispatcherServlet(不需要程序员开发)

   作用:接收请求,响应结果。 相当于一个转发器   有了DispatcherServlet可以减少其他组件之间的耦合度

2、处理器映射器 HandlerMapping(不需要程序员开发)

   作用:根据url查找Handler

3、处理器适配器 HandlerAdapter(不需要程序员开发)

   作用:按照特定规则(HandlerAdapter要求的规则)去执行Handler

4、处理器Handler(需要程序员开发)

   注意:编写Handler时按照HandlerAdapter的要求去做,这样适配器才能正确执行Handler

5、视图解析器 View resolver(不需要程序员开发)

   作用:进行视图解析,根据逻辑视图名解析成真正的视图(View)

6、视图 View(需要程序员来开发jsp)

   View是一个接口,实现类支持不同的View类型(jsp.er、pdf、excel..)

三、一个简单demo的搭建
1、环境:eclipse、maven-3.2.5、jdk1.7

2、新建一个maven项目,并在项目上右键点击Properties在Project Facets中勾选上Dynamic Web Module。(这样才能使项目变成一个web项目,/webapp/WEB-INF下才会出现web.xml文件,将来才能部署到Tomcat中)
这里写图片描述

3、配置pom.xml文件:本demo中我用的spring包是3.2.8版本的,用到的依赖有spripring-webmvc。具体的代码我会在文末给出。

4、在web.xml中配置前端控制器
这里写图片描述

注意:servlet-class里的类是引用的jar包内自带的,引用就好。

5、在web.xml中配置servlet-mapping,并指定拦截的url的类型,本demo中允许通过的是以.action结尾的url。
这里写图片描述

6、springmvc配置文件的配置(springmvc.xml)
spring.xml中需要配置的其实就是处理器映射器、适配器及视图解析器。
有一点需要注意的是,处理器映射器、适配器有两类,即注解映射器、适配器和非注解适配器。在实际应用中,我们用的一般都是注解映射器。

先来说注解适配器、映射器。如果你对应的类中有@controller、@service…其实你在springmvc.xml只需要一句话
这里写图片描述

至于非注解适配器映射器,我各给出了两种方法。
处理器映射器有:
1、org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping
2、org.springframework.web.servlet.handler.SimpleUrlHandlerMapping
处理器适配器有:
1、org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter
2、org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter

如果使用了非注解适配器还需要在该配置文件中配置handler。如果用的是SimpleControllerHandlerAdapter,则相应的处理器应实现Controller接口
如果用的是HttpRequestHandlerAdapter,则相应的处理器应实现HttpRequestHandler接口

这里写图片描述

最后在springmvc.xml中还应配置视图解析器org.springframework.web.servlet.view.InternalResourceViewResolver

7、本demo我配置了三个处理器。controller1、2、3分别对应实现了Controller接口、HttpRequestHandler接口和对应的非注解的处理器。
这里写图片描述

8、运行结果:
这里写图片描述

四、代码下载
https://github.com/gaofengfengfeng/FirstSpringMvc.git

0 0