spring 深入学习(三)-----spring web起步

前言

AOP和IOC的学习就暂时结束了

打开接下来的篇章-spring web,springmvc、视图解析

请求过程

在这里插入图片描述

DispatcherServlet

DispatcherServlet 是前端控制器,是springMVC的核心
DispatcherServlet的任务是将请求发送给Spring MVC控制器(controller)。同时接受并处理控制器返回的模型和视图。
按照传统的方式,像DispatcherServlet这样的Servlet会配置在web.xml文件中,所以web.xml其实就是一个DispatcherServlet配置

@controller

@controller 是不是经常见到,很显然这个注解就是用来声明控制器的。
其实@controller 和@Component 注解作用一样,都是用来声明这是spring上下文的一个bean。如果你想要用@Component也行,只是他不好看出这是哪一个组件。

校验注解

Java校验API定义了多个注解,这些注解可以放到属性上,从而限制这些属性的值。所有的注解都位 于javax.validation.constraints包

@AssertFalse 所注解的元素必须是Boolean类型,并且值为false
@AssertTrue 所注解的元素必须是Boolean类型,并且值为true
@DecimalMax 所注解的元素必须是数字,并且它的值要小于或等于给定的BigDecimalString值
@DecimalMin 所注解的元素必须是数字,并且它的值要大于或等于给定的BigDecimalString值
@Digits 所注解的元素必须是数字,并且它的值必须有指定的位数
@Future 所注解的元素的值必须是一个将来的日期
@Max 所注解的元素必须是数字,并且它的值要小于或等于给定的值
@Min 所注解的元素必须是数字,并且它的值要大于或等于给定的值
@NotNull 所注解元素的值必须不能为null
@Null 所注解元素的值必须为null
@Past 所注解的元素的值必须是一个已过去的日期
@Pattern 所注解的元素的值必须匹配给定的正则表达式
@Size 所注解的元素的值必须是String、集合或数组,并且它的长度要符合给定的范围
在这里插入图片描述

异常处理

特定的Spring异常将会自动映射为指定的HTTP状态码;
异常上可以添加@ResponseStatus注解,从而将其映射为某一个HTTP状态码;
在方法上可以添加 @ExceptionHandler 注解,使其用来处理异常。

@ExceptionHandler

对于@ExceptionHandler注解标注的方法来说,比较有意思的一点在于它能处理同一个控制器中所有处理器方法所抛出的异常。
既然@ExceptionHandler注解所标注的方法能够处理同一个控制器类中所有处理器方法的异常,那么你可能会问有没有一种方法能够处理 所有控制器中处理器方法所抛出的异常呢?

当然有
所以@ExceptionHandler 通常用来做全局异常处理

@ControllerAdvice

Spring 3.2引入了一个新的方案:控制器通知
控制器通知(controller advice)是任意带有@ControllerAdvice注解的类, 这个类会包含一个或多个如下类型的方法:

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

在带有@ControllerAdvice注解的类中,以上所述的这些方法会运用到整个应用程序所有控制器中带有@RequestMapping注解的方法 上

全局异常处理

@ControllerAdvice
public class BaseExpcetionHandler {

    /***
     * 全局异常处理
     * @param e
     * @return
     */
    @ExceptionHandler(value = Exception.class)
    @ResponseBody
    public Result error(Exception e){
        e.printStackTrace();
        return e.getMessage();
    }
}

重定向redirect:

return redirect:“/index”

猜你喜欢

转载自blog.csdn.net/weixin_43157543/article/details/104721324