专栏首页怀英的自我修炼《Spring实战》摘录 - 14

《Spring实战》摘录 - 14

131

Q: #7.4-1 | 什么是控制器通知 A: 控制器通知(controller advice)是任意带有@ControllerAdvice注解的类

132

Q: #7.4-2 | 控制器通知会包含一个或多个如下类型的方法 A:

  • @ExceptionHandler注解标注的方法;
  • @InitBinder注解标注的方法;
  • @ModelAttribute注解标注的方法。

133

Q: #7.4-3 | 如何通过@ControllerAdvice,将所有控制器的异常在同一个地方进行一致处理

A: 通过@ControllerAdvice将所有的@ExceptionHandler方法收集到一个类中,代码如下:

package spittr.web;import org.springframework.web.bind.annotation.ControllerAdvice;import org.springframework.web.bind.annotation.ExceptionHandler;
@ControllerAdvice //定义控制器类public class AppWideExceptionHandler{    @ExceptionHandler(DuplicateSpittleException.class) //定义异常处理方法    public String duplicateSpittleHandler(){        return "errot/duplicate";    }}

134

Q: #7.5-1 | 模型的属性是以请求属性的形式存放在请求中的,在重定向后无法存活。请以图示说明 A:

135

Q: #7.5-2 | 显然在spring中,对于重定向来说,模型并不能用来传递数据。但是我们也有一些其他方案,能够从发起重定向的方法传递数据给处理重定向方法中: A:

  • 使用URL模板以路径变量和/或查询参数的形式传递数据;
  • 通过flash属性发送数据。

136

Q: #7.5-3 | 在spring中,flash属性的作用,和实现方式 A:

  • 作用:在会话(跨定向会话)中携带数据。按照定义,flash属性会一直携带这些数据直到下一次请求,然后才会消失。
  • Spring提供了通过RedirectAttributes设置flash属性的方法,这是Spring 3.1引入的Model的一个子接口。RedirectAttributes提供了Model的所有功能,除此之外,还有几个方法是用来设置flash属性的。具体来讲,RedirectAttributes提供了一组addFlashAttribute()方法来添加flash属性。

137

Q: #7.5-4 | 请举个,使用addFlashAttribute()将Spitter对象添加到模型中,的例子 A:

@RequestMapping(value="/register", method=POST)public String processRegistration(Object obj, RedirectAttributes model) {  model.addAttribute("username", obj.getUsername());  model.addFlashAttribute("obj", obj);  return "redirect:/obj/{username}";}

138

Q: #7.5.5 | flash属性保存在会话中,然后再放到模型中,因此能够在重定向的过程中存活。请图示这个过程 A:

139

Q: #7.6-1 | Spring Web Flow是什么? A: 这是一个构建在Spring MVC之上的流程框架,它能够引导用户执行一系列向导步骤

140

Q: #8.1.1-1 | 简述执行器的作用 A: 流程执行器(flow executor)驱动流程的执行

本文分享自微信公众号 - 怀英的自我修炼(hydzwxl)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-04-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java漫谈3

    上次我们说道Java中的Hello World(以下简称HW)是什么样子的,还写了一段HW的输出程序。不知道你是否会有疑问,难道在Java的环境中只要输入这一句...

    用户1335799
  • 怀英漫谈1-JS初体验

    你好,欢迎来到怀英漫谈,这次想与你聊聊初学JS的感受。 这次接触JS的时候并不是零基础,是没有系统性的对JS的认知,正好这次也借此机会,用碎片的时间将JS的知识...

    用户1335799
  • Java漫谈2

    本周我们的Java漫谈从一个段子说起。话说有一个老程序退休了,在家闲着没事便开始学习写毛笔字,焚香,研墨,铺纸。站在薄如蝉翼白似雪的宣纸面前,提笔闭目。只见那人...

    用户1335799
  • jQuery源码研究:为jQ对象扩展的一些工具方法(上)

    上一章,讨论的是jQuery对象及其原型上的extend()方法,在源码中,实现了支持开发者自行扩展新方法的功能,但其实jQuery也通过对extend()传入...

    前端_AWhile
  • MongoDB Java 连接

    阳光岛主
  • 原 荐 Centos 7+CDH5.7.2全

    云飞扬
  • 从技术到场景再到盈利,4K微投的商业闭环何时实现?

    在这场大会中,“4K”一词被多次提及。一直以来,关于家庭影院投影技术方面的焦点似乎都离不开画面分辨率,从标清、高清到全高清再到如今的4K超高清,坎坷经历了数年发...

    用户2908108
  • 活动 | 如何从 0 到 1 打造一个爆款小程序?

    对创业者而言,相比如今各大应用市场 app 的红海,高昂研发成本和用户不堪重负的手机内存。

    知晓君
  • H3C系列网络设备通过腾讯云兼容性验证测试

    H3C S12500-X、S6800、S5130、MSR 3600系列网络设备通过腾讯云兼容性验证测试。

    用户1379644
  • Java-IO 流的Close方法

    GC运行的时间点是不确定的(因为是一条单独存在的线程),所以很多时候你不能直接控制什么时候发生GC。这个带来的问题有两点,一个是有时候你的内存不足需要立刻回收而...

    Fisherman渔夫

扫码关注云+社区

领取腾讯云代金券