处理器(也就是执行流程图上面的controller)执行逻辑(十)

处理器继承自:AbstractController,MultiActionController

 

一、AbstractController

如上图,可以分析出AbstractController用的处理器适配器是SimpleControllerHandlerAdapter

 

具体Mycontroller里面的handleRequestInternal这个方法是怎么执行的,上图里面AbstractController类是继承了Controller接口,Controller这个接口里面有一个如下图handleRequest这个方法,AbstractController重写了handleRequest这个方法,handleRequest这个方法如下图最后一行代码有执行了handleRequestInternal这个方法,而MyController这个里面有重新了handleRequestInternal这个方法,所以,MyController里面的方法就执行了。

 

 

 

 

AbstractController限定请求提交方式

看一下这个类WebContentGenerator,WebContentGenerator这个类有一个supportedMethods这个属性,因为是继承过来的,所以MyController里面也有supportedMethods这个属性,那么在注册的时候就可以设置这个属性了,如下图:

 

 

 

二、MultiActionController(包括:InternalPathMethodNameResolver(默认),ParameterMethodNameResolver)

之前的是下面这样写,如下

如上面的例子所示,一个MyController里面只能定义一个方法,而MultiActionController里面可以定义任意多个方法,只要返回ModelAndView就行:

 

springmvc.xml这样配置如下: 

 

 

ParameterMethodNameResolver用法如下:

 

 

方法名作为参数值出现的情况如下,也就是参数就是要执行的方法

时间: 2024-12-27 16:45:43

处理器(也就是执行流程图上面的controller)执行逻辑(十)的相关文章

ThinkPHP2.2框架执行流程图,ThinkPHP控制器的执行流程

ThinkPHP2.2框架执行原理.流程图在线手册 ThinkPHP控制器的执行流程 对用户的第一次URL访问 http://<serverIp>/My/index.php/Index/show/ 所执行的流程进行详细的分析,用户的URL访问首先是定位到了My项目的index.php 入口文件(注意:如果使用了URL_REWRITE,可能index.php已经被隐藏了),项目的入口文件所做的其实是实例化一个App应用实例,并且执行这个应用. 1.加载公共入口文件 在实例化App类之前,我们需要

block 影响代码执行由上往下执行顺序 从而影响功能的解决

其实 就是 多线程 或者线程锁 当然可能会有人用监听,这里只是给一种解决办法 嘿嘿 - (CLPlacemark*)getStartplacemark{//先创建一个semaphoredispatch_queue_t queue = dispatch_get_global_queue(0, 0);dispatch_semaphore_t semaphore = dispatch_semaphore_create(1); __block CLPlacemark* start; [self.geoC

KafkaProducer Sender 线程详解(含详细的执行流程图)

目录 1.Sender 线程详解 2.RecordAccumulator 核心方法详解 温馨提示:本文基于 Kafka 2.2.1 版本. 上文 <源码分析 Kafka 消息发送流程> 已经详细介绍了 KafkaProducer send 方法的流程,该方法只是将消息追加到 KafKaProducer 的缓存中,并未真正的向 broker 发送消息,本文将来探讨 Kafka 的 Sender 线程. @(本节目录) 在 KafkaProducer 中会启动一个单独的线程,其名称为 "

go在Linux上编译Windows执行文件

参考:http://studygolang.com/topics/21 (1)首先进入go/src 源码所在目录,执行如下命令创建目标平台所需的包和工具文件. $ cd /usr/local/go/src$ CGO_ENABLED=0 GOOS=linux GOARCH=amd64 ./make.bash 如果是 Windows 则修改 GOOS 即可.$ CGO_ENABLED=0 GOOS=windows GOARCH=amd64 ./make.bash-------------------

php通过cURL下载网络上面的一个HTTPS的资源

<?php /** * php通过cURL下载网络上面的一个HTTPS的资源 * 案例:从google的CDN上下载jquery- v1.7.1 */ $curlobj = curl_init(); // 初始化 curl_setopt($curlobj, CURLOPT_URL, "https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js");// 设置访问网页的URL curl_setopt($curlo

深入struts2(三)---工作机制和执行流程图

1     工作原理 1.1     体系架构 图2.1 struts2.0体系架构图 1.2     工作机制 针对上节体系架构图,下面分步说明执行流程 ?  客户端初始化一个指向Servlet容器(例如Tomcat)的请求: ?  这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin): 注:从struts2.1.3后就不需要配置Act

我的Android进阶之旅------&amp;gt;android Button上面的英文字符串自己主动大写的问题解决

今天碰到一个关于Button的问题:android Button上面的英文字符串会自己主动变成大写,执行的Android 5.1版本号,例如以下图所看到的: 图1:Button 图2:TextView 这个Button的定义代码例如以下 <Button android:id="@+id/addContacts" android:layout_width="match_parent" android:layout_height="wrap_conten

jcSQL简明执行流程图

赶着"黑色七月"的最后一天发一篇记点东西,这个月一共掉了三架飞机,我一直很害怕坐着一架人造的东西飞在几万米的高空,相比自己长出一对翅膀,前者应该要脆弱很多.这些人每个人都因为不同的原因去到别人的故乡,因为同样的原因坐上面前的飞机,踩上登机的梯子时琢磨着以怎样步伐下机,没人会想到最后一次接触地面是用如此惊人的速度,啊,人类啊,再聪明,也干不过大自然. jcSQL的executor目前进行得还算比较顺利,语法分析器也早已完成,也许是因为语言本身比较好处理,没有遇上什么需要让人翻各种&quo

linux上Kettle定时执行(转换的单步执行,job的单步执行,环境变量,kettle定时功能,效率问题等)转自(http://blog.csdn.net/feng19821209/article/details/5800960)

1,Kettle跨平台使用.    例如:在AIX下(AIX是IBM商用UNIX操作系统,此处在LINUX/UNIX同样适用),运行Kettle的相关步骤如下:    1)进入到Kettle部署的路径    2)执行 chmod *.sh,将所有shell文件添加可执行权限    3)在Kettle路径下,如果要执行transformation,就运行./pan.sh -file=?.ktr -debug=debug -log=log.log    其中.-file说明你要运行的transfor