当前位置: 首页 > news >正文

(四)Controller接口控制器详解(三)

八、AbstractWizardFormController

向导控制器类提供了多步骤(向导)表单的支持(如完善个人资料时分步骤填写基本信息、工作信息、学校信息等)

假设现在做一个完善个人信息的功能,分三个页面展示:

1、页面1完善基本信息;

2、页面2完善学校信息;

3、页面3完善工作信息。

这里我们要注意的是当用户跳转到页面2时页面1的信息是需要保存起来的,还记得AbstractFormController中的sessionForm吗? 如果为true则表单数据存放到session中,哈哈,AbstractWizardFormController就是使用了这个特性。

 

九、ParameterizableViewController

参数化视图控制器,不进行功能处理(即静态视图),根据参数的逻辑视图名直接选择需要展示的视图。 

<bean name="/parameterizableView"   
class="org.springframework.web.servlet.mvc.ParameterizableViewController">  
<property name="viewName" value="success"/>  
</bean>  

  

该控制器接收到请求后直接选择参数化的视图,这样的好处是在配置文件中配置,从而避免程序的硬编码,比如像帮助页面等不需要进行功能处理,因此直接使用该控制器映射到视图。

十、AbstractUrlViewController

提供根据请求URL路径直接转化为逻辑视图名的支持基类,即不需要功能处理,直接根据URL计算出逻辑视图名,并选择具体视图进行展示:

urlDecode是否进行url解码,不指定则默认使用服务器编码进行解码(如Tomcat默认ISO-8859-1);

urlPathHelper用于解析请求路径的工具类,默认为org.springframework.web.util.UrlPathHelper。

 

UrlFilenameViewController是它的一个实现者,因此我们应该使用UrlFilenameViewController

 

十一、UrlFilenameViewController

将请求的URL路径转换为逻辑视图名并返回的转换控制器,即不需要功能处理,直接根据URL计算出逻辑视图名,并选择具体视图进行展示:

 

根据请求URL路径计算逻辑视图名; 

/index1/*可以匹配/index1/demo,但不匹配/index1/demo/demo,如/index1/demo逻辑视图名为demo;

/index2/**可以匹配/index2路径下的所有子路径,如匹配/index2/demo,或/index2/demo/demo,“/index2/demo”的逻辑视图名为demo,而“/index2/demo/demo”逻辑视图名为demo/demo;

/*.html可以匹配如/abc.html,逻辑视图名为abc,后缀会被删除(不仅仅可以是html);

/index3/*.html可以匹配/index3/abc.html,逻辑视图名也是abc;

 

上述模式为Spring Web MVC使用的Ant-style 模式进行匹配的:

 

UrlFilenameViewController还提供了如下属性:

prefix生成逻辑视图名的前缀;

suffix生成逻辑视图名的后缀;

 

十二、MultiActionController  多动作控制器

1、每一个功能对应一个控制器,如果是CRUD则需要四个控制器,但这样我们的控制器会暴增,肯定不可取;

2、使用Spring Web MVC提供的MultiActionController,用于支持在一个控制器里添加多个功能处理方法,即将多个请求的处理方法放置到一个控制器里,这种方式不错。

 

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

相关文章:

  • 【洛谷 P2480】 [SDOI2010]古代猪文(中国剩余定理,Lucas定理)
  • heroku之python项目
  • K8S集群中部署jenkins
  • 支配vue框架初阶项目之博客网站-单页-登陆和注册的跳转
  • linux 挂在硬盘,并自动重启挂载
  • mongodb查询数据库中某个字段中的值包含某个字符串的方法
  • Go并发编程实战 第2版 PDF (中文版带书签)
  • html2canvas.js 图片跨域 生成图片模糊 图片偏移 高清图的问题总结
  • 人生苦短我用python(03),如何调试python程序
  • Django 框架07: 状态保持
  • 分类解析
  • 直播中 BarrageRenderer 弹幕的显示
  • linux学习之路:2.基本指令(2)
  • Discuz 配置tag标签页面url静态化(nginx)
  • [BZOJ] 1001: [BeiJing2006]狼抓兔子
  • Docker容器管理
  • JAVA_NIO系列——Channel和Buffer详解
  • MySQL几个简单SQL的优化
  • MySQL数据库运维之数据恢复
  • php ci框架整合银盛支付
  • SegmentFault 2015 Top Rank
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • spring + angular 实现导出excel
  • vue 配置sass、scss全局变量
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • 闭包--闭包作用之保存(一)
  • 服务器之间,相同帐号,实现免密钥登录
  • 关于字符编码你应该知道的事情
  • 十年未变!安全,谁之责?(下)
  • 微信开放平台全网发布【失败】的几点排查方法
  • 在 Chrome DevTools 中调试 JavaScript 入门
  • 我们雇佣了一只大猴子...
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • #define 用法
  • #Java第九次作业--输入输出流和文件操作
  • #微信小程序(布局、渲染层基础知识)
  • (javascript)再说document.body.scrollTop的使用问题
  • (PyTorch)TCN和RNN/LSTM/GRU结合实现时间序列预测
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (四) Graphivz 颜色选择
  • (图)IntelliTrace Tools 跟踪云端程序
  • (五)Python 垃圾回收机制
  • .NET Reactor简单使用教程
  • .net 流——流的类型体系简单介绍
  • .NET/ASP.NETMVC 大型站点架构设计—迁移Model元数据设置项(自定义元数据提供程序)...
  • .NET的数据绑定
  • .NET应用架构设计:原则、模式与实践 目录预览
  • [ C++ ] STL---stack与queue
  • [ CTF ]【天格】战队WriteUp- 2022年第三届“网鼎杯”网络安全大赛(青龙组)
  • [.net] 如何在mail的加入正文显示图片
  • [AAuto]给百宝箱增加娱乐功能
  • [Angular 基础] - 自定义指令,深入学习 directive