
1Spring MVC的工作流程: 2(1)客户端发起HTTP请求:客户端将请求提交到DisPatcherServlet(前端控制器)【所有的请求都有经过它来统一分发,在DispatcherServlet将请求分发给Spring Controller之前,需要借助于Spring提供的HandlerMapping定位到具体的Controller。】。 ---控制配置详见位置1 3(2)寻找处理器:由DisPatcherServlet控制器查询一个或多个HandlerMapping【完成客户请求到Controller映射】,找到处理该请求的Controller。 --处理配置器详见位置2 4(3)调用处理器:DisPatcherServlet将请求提交到Controller。 --Controller扫描配置详见位置3 5(4)调用业务逻辑并返回结果:Controller调用业务处理逻辑后,返回ModelAndView【模型(Model)和视图(View)】。 6(5)处理视图映射并返回模型:由DisPatcherServlet控制器查询一个或多个ViewResoler视图解析器,找到ModelAndView指定的视图。 --视图解析配置详见位置4 7(6)HTTP响应:视图负责将结果在客户端浏览器上渲染和展示。
1位置 1【配置于web.xml】 2<!-- spring-mvc核心控制器配置 --> 3<servlet> 4 <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 5 <init-param> 6 <!-- contextConfigLocation:指定spring-mvc配置的加载位置 --> 7 <param-name>contextConfigLocation</param-name> 8 <param-value>classpath:springmvc_context.xml</param-value> 9 </init-param> 10 <load-on-startup>0</load-on-startup> 11</servlet> 12<servlet-mapping> 13 <servlet-name>springmvc</servlet-name> 14 <!-- url-pattern:*.action的请交给DispatcherServlet处理,对请求URL进行解析,得到请求资源标识符(URI),判断请求URI对应的映射 --> 15 <url-pattern>*.action</url-pattern> 16</servlet-mapping> 17 18位置 2【配置于springmvc_context.xml】 19<!-- 这两个类用来启动基于Spring MVC的注解功能,将控制器与方法映射加入到容器中 --> 20<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" /> 21<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" /> 22也等同于 23<!-- 自动注册 HandlerMapping(实现为 RequestMappingHandlerMapping) 和 HandlerAdapter(实现为 RequestMappingHandlerAdapter) 两个类型的 Bean--> 24<mvc:annotation-driven />和 25 26位置 3【配置于springmvc_context.xml】 27<!-- ①:对web包中的所有类进行扫描,以完成Bean创建和自动依赖注入的功能 ,context:component-scan 的作用是扫描对应的 base-package,将 base-package 及其子包中被 @Component、@Controller、@Service、@Repository 等注解的类,注册到为 Spring Context,即在上下文环境中注册一个这样的 Bean--> 28<context:component-scan base-package="com.xsc.controller" /> 29 30位置 4【配置于springmvc_context.xml】 31<!-- 这个类用于Spring MVC视图解析,将ModelAndView及字符串解析为具体的页面 --> 32<bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 33<!-- prefix指定在视图逻辑名前所添加的前缀 --> 34 <property name="prefix" value="/WEB-INF/pages/" /> 35<!-- suffix指定在视图逻辑名后所添加的后缀 --> 36 <property name="suffix" value=".jsp" /> 37</bean>
