Spring MVC
目录
1 SPRINGMVC概述 1
1.1 什么是MVC 1
1.2 SPRING架构 1
1.3 SPRINGMVC的概述 1
2 SPRINGMVC配置 2
2.1 配置DISPATCHERSERVLET 2
2.2 配置SPRING上下文 3
2.3 配置请求映射控制器 3
2.3.1 BeanNameUrlHandlerMapping默认请求映射控制器 3
2.3.2 SimpleUrlHandlerMapping配置 4
2.3.3 ControllerClassNameHandlerMapping配置 4
2.3.4 CommonsPathMapHandlerMapping配置 4
2.3.5 配置多个映射处理器 4
2.4 使用控制器处理请求 4
2.5 配置视图解析 4
1 SpringMvc概述
1.1 什么是MVC
M是Model,表示模型,主要完成系统的逻辑处理。
V是View,表示视图,主要完成与用户的交互。
C是Controller,表示控制器,主要是建立模式与视图之间的关联。
1.2 Spring架构
Spring架构如下图:
1.3 SpringMVC的概述
我们可以通过SpringMvc对一个请求处理流程来概述SpringMvc。如下图所示:
DispatcherServlet---请求分发器,HanderMapping---URL映射控制器,
Controller---控制器,ModelAndView---信息模型,
ViewResolver---视图解析器,View---视图。
(1) 当客户端发起一个请求的时候,web容器会接受这个请求并将请求交给spring的分发器(DispatcherServlet)处理。DispatcherServlet是一个请求servlet控制器,它负责将请求发送给SpringMvc其他组件处理。
(2) 当DispatcherServlet接受了请求后,他会查询一个或多个URL映射处理器(HandlerMapping),根据映射关系做出请求分派处理决策。
(3) DispacherServlet根据查取的URL映射关系,将请求分派给相应的控制器(Controller)处理请求。一般控制器对请求只做很少的处理工作,他会将业务逻辑的处理交给服务层去处理并返回相应的结果数据。Controller类似于struts的Action功能。
(4) Controller处理完请求后,他会将结果数据和视图名称打包到信息模式(ModelAndView)中返回给DispatcherServlet。
(5) 一旦ModelAndView被提交给DispatcherServlet后,DispatcherServlet就会要求一个视图解析器(ViewResolver)来协助查找实际的视图路径(如JSP)。
(6) DispatcherServlet查找出视图渲染结果后,就会将模型数据(包含结果数据)提交给视图渲染一个页面呈现给用户。
2 SpringMvc配置
2.1 配置DispatcherServlet
DispatcherServlet是SpringMvc的核心,这个servlet的功能作为SpringMvc的前端控制器。要想使得DispatcherServlet能处理请求,必须在web应用系统的web.xml文件中进行相应的配置。
<servlet>
<servlet-name>dispatch </servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<filter-mapping>
<filter-name>dispatch </filter-name>
<url-pattern>/*.jsp</url-pattern>
</filter-mapping>
2.2 配置Spring上下文
可以在web应用系统的web.xml文件中配置ContextLoaderListener来装载spring配置文件。下面配置装载目录为/WEB-INF/config/*,这里的“*”表示目录/WEB-INF/config/下的所有文件都会被装载,也可以配置为具体文件路径,ContextLoaderListener根据路径来加载文件,也可配置多个文件路径,每个文件路径用逗号分隔。在spring配置文件中可以配置spring的控制组件和服务组件。
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/config/* </param-value>
</context-param>
2.3 配置请求映射控制器
HandlerMapping是SpringMvc的请求映射控制器,负责请求处理流程中的(2)将控制器映射到请求URL。SpringMvc中所有的请求映射控制器都实限了接口org.springframework.web.servlet.HandlerMapping。SpringMvc中有四个请求映射控制器,可以通过在spring配置文件中来配置相应的请求映射控制器。
(1)BeanNameUrlHandlerMapping根据控制器(Controller)的名字将控制器映射到URL。
(2)SimpleUrlHandlerMapping根据映射控制器(SimpleUrlHanderMapping)中定义的属性集合将控制器映射到URL。
(3)ControllerClassNameHaddlerMapping根据控制器(Controller)的类名作为URL的基础将控制器映射到URL。
(4)CommonsPathMapHandlerMapping根据控制器代码中的元数据将控制器映射到URL。
2.3.1 BeanNameUrlHandlerMapping默认请求映射控制器
SpringMvc中默认情况下配置的是BeanNameUrlHandlerMapping请求映射控制器,即当我们在spring中没有配置任何请求映射控制器时,DispatchServlet会使用默认的BeanNameUrlHandlerMapping请求映射控制器,根据控制器(Controller)的名字将控制器映射到URL。
2.3.2 SimpleUrlHandlerMapping配置
2.3.3 ControllerClassNameHandlerMapping配置
2.3.4 CommonsPathMapHandlerMapping配置
2.3.5 配置多个映射处理器
2.4 使用控制器处理请求
2.5 配置视图解析
-----------------------------------------------------------
参考:
《spring in action》
《spring 揭秘》
spring mvc 文档
未完待续