《Spring实战》摘录 - 14

in #ievolution6 years ago

19-04-14-c0.jpg


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:
19-04-14-c1.png


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:
19-04-14-c2.png


139

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


140

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

Coin Marketplace

STEEM 0.14
TRX 0.23
JST 0.031
BTC 83984.44
ETH 2068.83
USDT 1.00
SBD 0.63