一文让你搞懂SpringMVC常用注解

Controller详解

1:方法的返回值

有四种类型:

		一:ModelAndView:表示返回的为数据模型和试图

		二:String:表示返回的是试图

		      三种写法形式:
		      
				    一:普通字符串-------------》表示视图的名称

					二:"forward:"+url  -------------->转发

					三:"redirect:"+url  -------------->重定向
					
		三:void  将请求的url作为视图名称访问页面,很少使用
		
		四:Object 表示返回的是数据模型,(一般返回的是json数据)

SpringMVC常用注解介绍

注解解释
@Controller将类映射为Controller层,添加到IOC容器中
@RequestMapping配置请求映射路径即,URL
@PathVariable表示蚕食来源于URL
@RequestParam表示参数来源于请求参数(默认为true必须传递指定的参数)
@RequestHeader表示参数来源于请求头
@CookieValue表示参数来源于Cookie
@RequestBody表示参数来源于请求体
@ModelAttribute将请求数据转换为对象
@Valid后台校验
@InitBinder类型转化,注册属性编辑器
@ControllerAdvice统一异常处理,处理全局异常
@ExceptionHader异常处理器,处理特定一场方法
@ReponseBody结合返回值为Object的方法使用,用来返回JSON数据
@RestController将类隐射为Conteoller,默认所有方法添加@ResponseBody注解

@RequestMapping

基本用法:

该注解可以定义在方法上,也可以定义在类上,表示层级关系。

配置URL时以/开头和不以/开头的区别:

添加时表示从项目根路径开始查找

不添加时表示从当前方法所在层级开始查找

方法的参数

1:JavaEE组件

	HttpServletRequest

	HttpServletResponse

	HttpSession

2:IO流

   InputStream/OutputStream

	Reader/Writer

3:向页面传递数据

Model,Map,ModelMap

将数据存储到Request作用域中。

4:String 和基本类型

@RequestParam表示参数来源于请求参数,默认所有的参数都添加该注解,参数来源于同名的请求参数

@PathVariable 表示参数来源于URL

@RequestHeader 表述参数来源于请求头

@CookieValue 表示参数来源于Cookie

@RequestBody 表示参数来源于请求体(只有post请求才有post请求一定要加上)

自定义类型

@ModelAttribute 将请求数据转换为对象

条件:对象的属性名必须表单元素的名称相同

@ModelAttribute 注解有两种用法

一:在方法参数的前面添加该注解 (默认不添加也会转换为对象) 作用:将请求参数转换为对象

  @RequestMapping("/regist")
  public String regist(UserVo userVo){
    System.out.println("userVo:"+userVo);
    return "result";
}

二:在方法上添加该注解

@ModelAttribute("types")
public List test05(){
    List list = new ArrayList();
    list.add(1);
    list.add("root");
    list.add("河南");
    System.out.println("@ModelAttribute:");
    return list;
}

**作用:**在调用所有目标方法前都会调用添加@ModelAttribute注解的方法,并向模型中添加数据。

错误参数:

Errors ,BindingResult

用来接受错误消息,实现服务端的数据校验

实际开发中,既要做客户端表单校验,也要做服务器端数据校验。
@RequestMapping("/regist")
public String regist(UserVo userVo,Errors errors){
    if (errors.hasErrors()){
        System.out.println("error:"+errors);
        return "regist";
    }
    System.out.println("userVo:"+userVo);
    return "result";
}

服务器端数据校验:

JSR303简介:

JSR303是一个数据验证的标准规范,用于对java Bean中的属性进行验证,称为Bean Validation

提供了常用的校验注解

Hibernate Validator

是JSR303的一个参考实现并提供了扩展注解。

用法,

一:添加jar包

  <!--hibernate -validator-->
  <dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
  </dependency>
  <dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator-annotation-   processor</artifactId>
  </dependency>

二:为参数对象添加注解

   @RequestMapping("/regist")
    public String regist(@Valid UserVo userVo,     Errors errors){
        if (errors.hasErrors()){
            System.out.println("error:"+errors);
            return "regist";
        }
        System.out.println("userVo:"+userVo);
        return "result";
    }

三:为属性添加校验注解

 @NotEmpty(message = "用户名不能为空")
    private String username;
    @NotEmpty(message = "密码不能为空")
    private String password;
    @Email(message = "输入邮箱格式")
    @NotEmpty(message = "邮箱不能为空")
    private String email;
    @NotNull(message = "手机号不能为空")
    @Max(value = 11,message = "手机号长度为11位")
    @Min(value = 11,message = "手机号长度为11位")
    private Integer phone;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值