搭建英文网站,网络app推广是什么工作,老版本网站开发工具,网站建设动画代码一、引子
我们在上一篇文章Spring MVC-基本概念中#xff0c;为读者解释了如何使用SpringMVC框架#xff0c;将承接客户端请求的工作从原生的Servlet转移到我们熟知的Controller中。那么我们不禁会好奇#xff0c;SpringMVC框架到底做了什么#xff0c;是怎么把请求分发给…一、引子
我们在上一篇文章Spring MVC-基本概念中为读者解释了如何使用SpringMVC框架将承接客户端请求的工作从原生的Servlet转移到我们熟知的Controller中。那么我们不禁会好奇SpringMVC框架到底做了什么是怎么把请求分发给Controller的呢请读者继续阅读。
二、请求流程
SpringMVC的各个组件及执行流程如下图所示 SpringMVC的请求流程主要包括以下步骤
客户端发送请求被前端控制器DispatcherServlet接收前端控制器DispatcherServlet调用处理器映射器HandlerMapping查询处理器处理器映射器找到具体的处理器可根据xml配置、注解进行查找生成处理器对象及处理器拦截器返回处理器执行链HandlerExecutionChain前端控制器调用处理器适配器HandlerAdapter执行处理器处理器适配器经过适配调用映射到的处理器Handler即Controller也叫后端控制器处理器执行完成后返回ModelAndView对象处理器适配器将ModelAndView返回给前端适配器前端控制器将ModelAndView传给视图解析器ViewResolverViewResolver解析后返回具体的View前端控制器根据View进行渲染视图同时会把Model中数据填充到视图中响应给客户端。
三、快速演示
例如我们可以在spring-mvc.xml配置文件中声明视图解析器设置视图的前缀与后缀
?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:contexthttp://www.springframework.org/schema/contextxsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd!--扫描控制层组件--context:component-scan base-packagecom.bylearning.controller/bean idviewResolver classorg.springframework.web.servlet.view.InternalResourceViewResolverproperty nameprefix value/WEB-INF/jsp/ /property namesuffix value.jsp //bean
/beans
于是我们在Controller的代码便可改写成
import com.bylearning.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;Controller
public class HelloController {Autowiredprivate UserService userService;RequestMapping(value /)public String protal() {// 将逻辑视图返回return index;}RequestMapping(value /hello)public String hello() {System.out.println(userService);return success;}
}当然此时的目录结构是 这里我们先不去过多演示关于SpringMVC组件的自定义使用方法重点是了解请求的执行流程以及由WebServlet注解演变到Controller的过程中发生了什么这样才能更加深刻的了解框架与技术的更迭。
此外关于组件的另一个示例使用我们恰巧需要在SpringMVC-响应这一篇中介绍处理器适配器中配置消息转换器请感兴趣的读者继续阅读。