一、AbstractController(简单控制器)

AbstractController使用方法:

首先让我们使用AbstractController来重写第二章的HelloWorldController:

public class HelloWorldController extends AbstractController {@Overrideprotected ModelAndView handleRequestInternal(HttpServletRequest req, HttpServletResponse resp) throws Exception {//1、收集参数//2、绑定参数到命令对象//3、调用业务对象//4、选择下一个页面ModelAndView mv = new ModelAndView();//添加模型数据 可以是任意的POJO对象mv.addObject("message", "Hello World!");//设置逻辑视图名,视图解析器会根据该名字解析到具体的视图页面mv.setViewName("hello");return mv;}
}
<!— 在chapter4-servlet.xml配置处理器 -->
<bean name="/hello" class="cn.javass.chapter4.web.controller.HelloWorldController"/>

从如上代码我们可以看出:

1、继承AbstractController

2、实现handleRequestInternal方法即可。

二、ServletForwardingController

将接收到的请求转发到一个命名的servlet

三、BaseCommandController

命令控制器通用基类,提供了以下功能支持:

1、数据绑定:请求参数绑定到一个command object(命令对象,非GoF里的命令设计模式),这里的命令对象是指绑定请求参数的任何POJO对象;

commandClass:表示命令对象实现类,如UserModel;

commandName:表示放入请求的命令对象名字(默认command),request.setAttribute(commandName, commandObject);

2、验证功能:提供Validator注册功能,注册的验证器会验证命令对象属性数据是否合法;

validators:通过该属性注入验证器,验证器用来验证命令对象属性是否合法;

该抽象类没有没有提供流程功能,只是提供了一些公共的功能,实际使用时需要使用它的子类。

四、AbstractCommandController

命令控制器之一,可以实现该控制器来创建命令控制器,该控制器能把自动封装请求参数到一个命令对象,而且提供了验证功能。

用于支持带步骤的表单提交的命令控制器基类,使用该控制器可以完成:

1、定义表单处理(表单的渲染),并从控制器获取命令对象构建表单;

2、提交表单处理,当用户提交表单内容后,AbstractFormController可以将用户请求的数据绑定到命令对象,并可以验证表单内容、对命令对象进行处理。

五、AbstractFormController

用于支持带步骤的表单提交的命令控制器基类,使用该控制器可以完成:

1、定义表单处理(表单的渲染),并从控制器获取命令对象构建表单;

2、提交表单处理,当用户提交表单内容后,AbstractFormController可以将用户请求的数据绑定到命令对象,并可以验证表单内容、对命令对象进行处理。

六、SimpleFormController

提供了更好的两步表单支持:

1、准备要展示的数据,并到表单展示页面;

2、提交数据数据进行处理。

七、CancellableFormController

1、表单展示:和SimpleFormController一样;

2、表单取消:和SimpleFormController一样;

3、表单成功提交:取消功能处理方法为:onCancel(Object command),而且默认返回cancelView属性指定的逻辑视图名。

那如何判断是取消呢?如果请求中有参数名为“_cancel”的参数,则表示表单取消。也可以通过cancelParamKey来修改参数名(如“_cancel.x”等)。

AbstractController

转载于:https://www.cnblogs.com/yuexiaoyun/p/9461123.html

(三)Controller接口控制器详解(二)相关推荐

  1. 第四章 Controller接口控制器详解(5)——跟着开涛学SpringMVC

    2019独角兽企业重金招聘Python工程师标准>>> 原创内容,转载请注明iteye http://jinnianshilongnian.iteye.com/ 4.15.Multi ...

  2. Controller接口控制器详解(1)

    4.1.Controller简介 Controller控制器,是MVC中的部分C,为什么是部分呢?因为此处的控制器主要负责功能处理部分: 1.收集.验证请求参数并绑定到命令对象: 2.将命令对象交给业 ...

  3. 源代码下载 第六章 注解式控制器详解

    2019独角兽企业重金招聘Python工程师标准>>> 源代码请到附件中下载. 其他下载: 跟着开涛学SpringMVC 第一章源代码下载 第二章 Spring MVC入门 源代码下 ...

  4. 学习笔记之-Kubernetes(K8S)介绍,集群环境搭建,Pod详解,Pod控制器详解,Service详解,数据存储,安全认证,DashBoard

    笔记来源于观看黑马程序员Kubernetes(K8S)教程 第一章 kubernetes介绍 应用部署方式演变 在部署应用程序的方式上,主要经历了三个时代: 传统部署:互联网早期,会直接将应用程序部署 ...

  5. ASP.NET MVC Controller激活系统详解:默认实现

    Controller激活系统最终通过注册的ControllerFactory创建相应的Conroller对象,如果没有对ControllerFactory类型或者类型进行显式注册(通过调用当前Cont ...

  6. ILI9341的使用之【四】RGB接口操作详解

    <ILI9341的使用之[一]TFT-LCD原理(转载)> <ILI9341的使用之[二]ILI9341介绍> <ILI9341的使用之[三]ILI9341系统通信接口模 ...

  7. AXI接口协议详解-AXI总线、接口、协议

    转自:https://cloud.tencent.com/developer/article/1695010 AXI接口协议详解-AXI总线.接口.协议 AXI 总线 上面介绍了AMBA总线中的两种, ...

  8. Spring Cloud Eureka 入门 (三)服务消费者详解

    2019独角兽企业重金招聘Python工程师标准>>> 摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! "真正的进步 ...

  9. linux 进程间通信 dbus-glib【实例】详解二(下) 消息和消息总线(ListActivatableNames和服务器的自动启动)(附代码)

    linux 进程间通信 dbus-glib[实例]详解一(附代码)(d-feet工具使用) linux 进程间通信 dbus-glib[实例]详解二(上) 消息和消息总线(附代码) linux 进程间 ...

最新文章

  1. python log文件_Python logging基本使用
  2. golang中的fallthrough
  3. python sort 多级排序_sort、sorted排序技巧(多级排序)
  4. 内部矩阵维度必须一致simulink_简单五步实现 MATLAB/Simulink 锂电池建模
  5. Hive创表异常,FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask.
  6. logging记录日志
  7. asp.net 递归删除文件夹及其子文件夹和所有文件[转]
  8. ASP.NET Core 3.1 Web API和EF Core 5.0 中具有泛型存储库和UoW模式的域驱动设计实现方法
  9. noteexpress 笔记导出_把笔记还给用户,可以选择自己存储位置的笔记应用#Joplin...
  10. 计算机符号大全名字大全,符号大全_特殊符号网名大全
  11. 中国可调节麦克风支架行业销售状况与盈利前景预测报告(2022-2027)
  12. 简单的有限状态机Unity独家写法(呸~厚颜无耻之人)
  13. 小米全国高校编程大赛 正式赛题解
  14. WPS尾部空格没有下划线
  15. matlab 插值生成曲面,[转]Matlab曲面拟合和插值
  16. GAMES101笔记_Lec07~09_着色 Shading
  17. 四旋翼无人机硬件,飞控,基站,NX
  18. vw 前端_css3的vw单位,vh单位的讲解,以及vw vh的兼容性
  19. 同程旅游——Java开发面经
  20. 你说python慢?终端像个黑匣子太丑?...?那是因为你不懂IPython

热门文章

  1. 51单片机点亮第一个LED教程
  2. android activity alias,动态更换桌标 Activity-alias
  3. 模态和非模态代码_我们如何使模态可用和可访问?
  4. 微信公众号无需二次登录_您无需两次解决问题-您需要一个设计系统
  5. latex排版基础_排版基础分类
  6. Android布局大全
  7. 小到年货大到产业,刘村长的扶贫模式有点厉害!
  8. android--------volley之网络请求和图片加载
  9. 10月31日,面试题小结
  10. Flask 应用的文件结构