SpringMVC ----从 配置文件开始

时间:2022-12-10 21:39:35

          说起spring mvc,还是自己在面试之前积累的一些知识。根本不知道它真正的是什么。看过一些讲原理的书,看过一些人的博客,但这些都是为了面试而准备,自己说的非常溜,说起来一套一套的也只是暂时的。四个月的实习归来,回想起什么是spring mvc?脑海中记忆最深刻的,竟然是自己在实习期的项目中的运用----通过自己边敲代码,一遍和配置文件作战(出错一般都是配置文件出错),一边总结得到的一些知识。

    所以这次自己找来spring mvc的详解视频来学习,也感觉是深有感触。每讲一点,自己脑海中总是不知不觉的把这些知识和自己实习的项目结合,脑海中总是响起:“哦~~~,原来是这么配的啊!原来是因为这个才这么配的啊!!!”恍然大悟的感觉,就发现自己脑子里面的东西越来越多。

 

      下面咱们就从spring mvc的配置文件来说,总结一些属于我自己的知识。

1、什么是springmvc

       Spring就是一个大的框架,它包括,AOP,IOC,spring JDBC,JPA等等一系列的东西。

       mvc是一个设计模式,它包括控制器,模型,视图。简单的一个三层的模式。

SpringMVC是属于spring框架的一个运用了升级了的mvc模式的框架。它和spring的整合无须任何中间配置,因为它就是属于spring框架的。(星期六听讲课,发现还有好多人认为mvc模式的m就是指的model,其实这种想法是不对的,mvc里面的Model其实指的是模型(数据处理模型),在这里模型包括service,也包括dao,还包括咱们写struts的时候经常见的action等,它是一个泛指。所以大家的理解不要太狭窄。)

 

2springmvc整体介绍

       既然springmvcmvc模式的一个升级,咱们就从它的变化入手来看springmvc框架。

      首先咱们都知道mvc的核心就是这个控制器,它用于接受用户请求,调用模型处理请求,再把处理之后的数据返回给视图。

       同样的,这个springmvc也有一个核心控制器,就是前端控制器。所有的请求转发都是在这里发起并返回到这里的。

     它的作用如下:

                   1、接受用户请求,

                   2、根据用户请求,请求处理器映射器(handlerMapping找到对应的handler地址返回。

                  3、得到handler处理“地址”之后,根据“地址”找到可以处理handler处理器适配器(handlerAdapter

                  4、接受执行Handler之后返回的ModelAndView(底层对象)

                   5、然后把这个ModelAndView对象送到对应的视图解析器去解析

                  6、得到解析之后的view,对view进行数据渲染,就是最后的jsp页面。

                 7、响应结果,返回给用户

 

       然后就是两个比较重要的处理器:

        处理器映射器:它是我们配置文件需要配置的地方,配置寻找对应的handler

        处理器适配器:它是调用Handler处理器去执行Handler

       上面所说的Handler处理器其实就是我们平常所说的controller

  

    最后就是

        视图解析器:

        它可以把从前端控制器得到的ModelAndView对象解析成物理试图并返回给前端控制器。

 

3Springmvc配置文件的配置:

 

从上面的描述,就可以知道,我们程序员需要配置的一个就是核心:前端控制器。另一个就是处理器映射器,处理器适配器和视图解析器。Handler处理器是需要我们写逻辑代码的。

 

 

前端控制器,是配置在web.xml中的,具体如下图:

SpringMVC ----从 配置文件开始

 

 

处理器映射器(写在spring.xml中):

SpringMVC ----从 配置文件开始

       处理器映射器常用的是如图第二种:通过处理器的name值和适配器的key值对应,处理器的id和适配器的prop的值对应,来找到要执行的controller

 

处理器适配器:

SpringMVC ----从 配置文件开始

或者用下面:

SpringMVC ----从 配置文件开始

 

这两种适配器的不同之处,不过就是对应controller要实现的是Controller类还是HttpRequestHandler类。大家有兴趣可以研究一下,不过这不是咱们讲的重点。

 

以上讲的是处理器和映射器的非注解形式的配置。

 

这种非注解方式的弊端是:一个controller类只能写一种方法,或增或删,或改,不能在一个类里面写多个方法。

 

解决方法,让我们接着往下看:

         我们平时写代码的时候还会看到好多@加在controller上面,而且写了一堆的参数,还定义了js寻找对应的controller的路径。这些的实现,基于的就是咱们下面要讲的基于注解的处理器和适配器的实现。

 

比如我们要实现一个Handler处理器:controller3,就可以这么写

SpringMVC ----从 配置文件开始

 

 

那么适配器和映射器怎么组合可以如何找到这个controller(handler处理器)呢?答案就是@RequestMapping的注解。

那我们怎么才可以应用@RequestMapping注解呢?就是要配对的在spring.xml中写下下面两句话:

 SpringMVC ----从 配置文件开始

 SpringMVC ----从 配置文件开始

 

 

前端控制器,处理器映射器,处理器适配器,我们都知道怎么配置了。那么怎么配置是视图解析器呢?如下:

SpringMVC ----从 配置文件开始

这个配置还有一个前缀和后缀的配置:

例如下面:controller中:

SpringMVC ----从 配置文件开始

画红框的,每次都得写这么长的路径,会非常麻烦,所以就把前后缀都配到视图解析器中,如下:

 

SpringMVC ----从 配置文件开始

 

这就是所有springmvc的配置文件的配置,以及配置说明。