博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(三)Controller接口控制器详解(二)
阅读量:5951 次
发布时间:2019-06-19

本文共 1818 字,大约阅读时间需要 6 分钟。

一、AbstractController(简单控制器)

AbstractController使用方法:

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

 

public class HelloWorldController extends AbstractController {	@Override	protected 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;	}}

 

 

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

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

你可能感兴趣的文章
好吧,你说简单就简单,但简单的事,不要变成本能,要常思常变
查看>>
公有云账单:忽略这四项成本,后果很严重!
查看>>
java内存管理(堆、栈、方法区)
查看>>
用java实现邮件发送验证码
查看>>
Kubernetes的四种用户部署场景
查看>>
这是EnterLib PIAB的BUG吗?
查看>>
光伏项目用地政策解析
查看>>
Vsphere日记01.ESXi5.5.install
查看>>
去除Android 6.0 界面下的导航栏:NavigationBar
查看>>
从底层看云:云计算准备好了么?
查看>>
云上“超算中心” 阿里云推出弹性高性能计算平台E-HPC
查看>>
java HTML5 学习资料汇总
查看>>
里约奥运会的五项技术创新
查看>>
科技圈CEO用微鲸尬明星脸,除了罗永浩还有哪些大牛光荣上榜?
查看>>
HTTPS 加密算法原理详解
查看>>
追踪盗窃12亿用户登录数据的网络犯罪团伙
查看>>
免杀的艺术:史上最全的汇编Shellcode的技巧(三)
查看>>
NAS与SAN架构:如何比较这两个存储系统
查看>>
使用Python Shells绕过杀毒软件
查看>>
12T已达机械硬盘极限 未来突破靠氦气硬盘
查看>>