Spring MVC框架改造超市订单系统 - 2 (里面的重点)

前言

讲解在修改超市订单系统项目中的知识点,和易错点,希望可以帮助大家理解Spring MVC 的用法。

@ModelAttribute

@ModelAttribute使用大致有有两种,一种是是直接标记在方法上,一种是标记在方法的参数中,两种标记方法产生的效果也各不相同。

  1. 直接标记在方法上
    当同一个controller(控制器)中有任意一个方法被@ModelAttribute注解标记,页面请求只要进入这个控制器,不管请求那个方法,均会先执行被@ModelAttribute标记的方法,所以我们可以用@ModelAttribute注解的方法做一些初始化操作。当同一个controller中有多个方法被@ModelAttribute注解标记,所有被@ModelAttribute标记的方法均会被执行,按先后顺序执行,然后再进入请求的方法。

  2. 标记在方法的参数中
    Spring MVC中,将方法入参 对象 添加到模型中,仅需要在对应的入参前使用 (1)@ModelAttribute注解即可。(2)当然也可以不使用@ModelAttribute,直接在Model入参,并将对象放入.

    @RequestMapping(value="/useradd.html",method=RequestMethod.GET)
    	public String addUser(@ModelAttribute("user") User user){
    		return "useradd";
    	}
    
    @RequestMapping(value="/useradd.html",method=RequestMethod.GET)
    	public String addUser(User user,Model model){
    		model.addAttribute("user", user);
    		return "useradd";
    	}
    

@DateTimeFormat

Spring MVC框架中 时间 类型的数据无法自动绑定,要在实体类时间类型的属性中添加注解@DateTimeFormat

	@DateTimeFormat(pattern="yyyy-MM-dd")
	private Date birthday;  //出生日期

Spring 表单标签

Spring MVC项目开发的时候,一般会使用EL和JSTL完成视图的开发,Spring 有自己一套表达标签库,通过Spring 表单标签,很容易将模型数据中的表单绑定到HTML表单元素中。

Spring 常用表单标签

名称说明
<fm:form/>渲染表单元素
<fm:input/>输入框组件标签
<fm:password/>密码框组件标签
<fm:hidden/>隐藏框组件标签
<fm:textarea/>隐藏框组件标签
<fm:radiobutton/>单选框组件标签
<fm:checkbox/>复选框组件标签
<fm:select/>下拉列表组件标签
<fm:error/>显示表单数据校验所对应的错误信息
  1. JSP页面导入Spring MVC标签库,与导入JSTL标签库的语法非常相似,前缀prefix可以自定义,通常定义为form。

    <%@ taglib uri="http://www.springframework.org/tags/form"  prefix="fm" %>
    

数据校验

Spring MVC又两种方式可以验证输入:

  • 利用Spring 自带的验证框架
  • 利用JSR 303 实现
JSR 303
  • Java为Bean数据合法性校验所提供的标准框架
  • Spring MVC支持JSR 303标准的校验框架
  • JSR 303通过在Bean属性上标注校验注解指定校验规则,并通过标准的验证接口对Bean进行验证
  • http://jcp.org/en/jsr/detail?id=303
注意
JSR 303 约束
约束说明
@Null被注释的元素必须为 null
@NotNull被注释的元素必须不为 null
@AssertTrue被注释的元素必须为 true
@AssertFalse被注释的元素必须为 false
@Min(value)被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@Max(value)被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@DecimalMin(value)被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@DecimalMax(value)被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@Size(max=, min=)被注释的元素的大小必须在指定的范围内
@Digits (integer, fraction)被注释的元素必须是一个数字,其值必须在可接受的范围内
@Past被注释的元素必须是一个过去的日期
@Future被注释的元素必须是一个将来的日期
@Pattern(regex=,flag=)被注释的元素必须符合指定的正则表达式
实现步骤
  • 加入jar文件
    • hibernate-validator-4.3.2.Final.jar
    • jboss-logging-3.1.0.CR2.jar
    • validation-api-1.0.0.GA.jar
  • POJO
    • 修改实体类
    • 给需要验证的属性增加相应的校验注解

RESR 风格

什么是REST风格
  • Representational State Transfer,表述性状态转移,是一种软件架构风格
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值