SpringMVC执行流程
2021-08-30 07:45:39 15 举报
SpringMVC执行流程
作者其他创作
大纲/内容
DispatcherServlet根据视图解析器解析的视图结果,调用具体的视图,并将视图呈现给用户
6
具体的HandlerHandlerExecution
View
SpringMVC执行原理
1、发送请求
在 NativeMethodAccessorImpl 的 invoke 方法里,其会判断调用次数是否超过阀值(numInvocations)。如果超过该阀值,那么就会生成另一个MethodAccessor 对象,并将原来 DelegatingMethodAccessorImpl 对象中的 delegate 属性指向最新的 MethodAccessor 对象
4
MethodAccessor 对象某一个类的invoke方法
12
调用了 delegate 属性的 invoke 方法,它有两个实现类,分别是:DelegatingMethodAccessorImpl 和 NativeMethodAccessorImpl。这里的 delegate 其实是一个 NativeMethodAccessorImpl 对象,所以这里会进入 NativeMethodAccessorImpl 的 invoke 方法
要看返回的是哪个类的对象1、调用Method类中的acquireMethodAccessor方法,返回MethodAccessor对象2、在acquireMethodAccessor方法中调用ReflectionFactory对象的newMethodAccessor方法(存在一个设计模式),最终返回DelegatingMethodAccessorImpl类对象
前端控制器DispatcherServlet
DelegatingMethodAccessorImpl类的invoke方法
8
11
springmvc-servlet.xml中添加<!--视图解析器:DispatcherServlet给他的ModelAndView--><bean class=\"org.springframework.web.servlet.view.InternalResourceViewResolver\" id=\"InternalResourceViewResolver\"> <!--前缀--> <property name=\"prefix\" value=\"/WEB-INF/jsp/\"/> <!--后缀--> <property name=\"suffix\" value=\".jsp\"/></bean>DispatcherServlet调用视图解析器(ViewResolver)来解析HandlerAdapter传递的逻辑视图名。视图解析器将解析的逻辑视图名传给DispatcherServlet
web.xml <!--1.注册DispatcherServlet--> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!--关联一个springmvc的配置文件:【servlet-name】-servlet.xml--> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc-servlet.xml</param-value> </init-param> <!--启动级别-1--> <load-on-startup>1</load-on-startup> </servlet>DispatcherServlet接收请求并拦截请求假设请求为:http://localhost:8080/SpringMVC/hellohttp://localhost:8080 服务器域名SpringMVC 部署在服务器上的web站点hello 表示控制器
用户
视图解析器ViewResolver
3
处理器映射HandlerMapping
2
9
Method类中invoke方法:执行目标方法
SpringMVC的配置文件-springmvc-servlet.xml<?xml version=\"1.0\" encoding=\"UTF-8\"?><beans xmlns=\"http://www.springframework.org/schema/beans\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd\"><bean class=\"org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping\
10
springmvc-servlet.xml中添加<bean class=\"org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter\"/>按照特定的规则去执行HandlerHandler让具体的Controller执行由Controller返回ModelAndView后HandlerAdapter将视图逻辑名或模型传递给DispatcherServlet
处理器适配器HandlerAdapter
5
Controller
Method类的invoke方法
NativeMethodAccessorImpl 的 invoke 方法
7
1、调用Method类中的acquireMethodAccessor方法,返回MethodAccessor对象2、最终调用MethodAccessor 返回对象的某一个类的invoke方法
收藏
0 条评论
下一页