Spring框架——day04参数校验和文件上传

一,参数校验

springmvc中我们可以使用第三方的校验框架来实现请求参数的校验,常用hibernate的校验框架validation

1.pom中导入所需依赖
    hibernate-validator-4.3.2.Final.jar
    jboss-logging-3.1.0.CR2.jar
    validation-api-1.0.0.GA.jar
2.配置验证器
    <!-- 配置验证器 -->
    <bean id="myvalidator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
        <property name="providerClass" value="org.hibernate.validator.HibernateValidator"></property>
    </bean> 

    <mvc:annotation-driven validator="myvalidator"/>

3.创建实体类,用注解配置校验规则
    public class Phone {
        private Integer id;
        @NotBlank(message = "品牌呢?")
        private String brand;
        @NotBlank(message = "没型号?")
        private String model;
        @Max(value = 99999, message = "太贵了吧?")
        private Integer price;
        @DateTimeFormat(pattern = "yyyy-MM-dd")
        private Date launchDate;
        //GETTERS AND SETTERS...
    }

4.contorller:
    @RequestMapping("add")
    public String add(Model md,@Valid Phone phone, BindingResult br) throws Exception {
        if (br.hasErrors()) {
            FieldError brand = br.getFieldError("brand");
            FieldError model = br.getFieldError("model");
            FieldError price = br.getFieldError("price");
            if (brand != null) {
                md.addAttribute("brandmsg", brand.getDefaultMessage());
            }
            if (model != null) {
                md.addAttribute("modelmsg", model.getDefaultMessage());
            }
            if (price != null) {
                md.addAttribute("pricemsg", price.getDefaultMessage());
            }
            return "add";
        } else {
            phoneService.add(phone);
            return "redirect:list";
        }
    }

    注意:参数列表中,被校验的参数(phone)和BindingResult必须相邻并保证顺序。

5.jsp显示错误信息
    品??牌:<input type="text" name="brand"><span style="color: red;">${ brandmsg }</span><br>
    型??号:<input type="text" name="model"><span style="color: red;">${ modelmsg }</span><br>
    价??格:<input type="text" name="price"><span style="color: red;">${ pricemsg }</span><br>二,SpringMVC中的文件上传
1.springmvc对fileupload进行了封装,使用上传需要先导入fileupload的依赖:
    <dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
      <version>1.3.2</version>
    </dependency>
2.还需要在springmvc的配置文件中配置文件解析器:
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="maxUploadSize" value="10240000"/>
    </bean>
3.表单中需要指定提交方式为post,并将enctype改为multipart/form-data
4.完成以上设置,就可以在controller方法中接收文件了:
    @RequestMapping("/upload")
    public String upload(@RequestParam("fileName") CommonsMultipartFile file) throws Exception {
    }

    注意该参数需要通过@RequestParam指定参数名


常用校验注解
@Null 被注释的元素必须为 null
@NotNull 被注释的元素必须不为 null
@NotEmpty 被注释的字符串的必须非空
@NotBlank 验证字符串非null,且长度必须大于0
@Min(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@Max(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@Size(max=, min=) 被注释的元素的大小必须在指定的范围内
@Pattern(regex=) 被注释的元素必须符合指定的正则表达式
@Email 被注释的元素必须是电子邮箱地址
@DecimalMin(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@DecimalMax(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@Digits(integer, fraction) 被注释的元素必须是一个数字,其值必须在可接受的范围内
@Past 被注释的元素必须是一个过去的日期
@Future 被注释的元素必须是一个将来的日期
@Length(min=,max=) 被注释的字符串的大小必须在指定的范围内
@Range(min=,max=) 被注释的元素必须在合适的范围内
@AssertTrue 被注释的元素必须为 true
@AssertFalse
被注释的元素必须为 false

原文地址:https://www.cnblogs.com/memo-song/p/9157530.html

时间: 2024-10-04 12:27:56

Spring框架——day04参数校验和文件上传的相关文章

Spring Boot 2.X 实现文件上传(三)

使用 SpringBoot 项目完成单个.多个文件的上传处理,并将上传的文件保存到指定目录下. 代码演示案例 所有的 HTML 页面文件 index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>选择上传文件类型</title> </head> <script languag

Spring 4 官方文档学习(十一)Web MVC 框架之multipart(文件上传)支持

http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-multipart 1.简介 Spring内置的multipart支持会处理web应用中的文件上传.你可以启用该支持 -- 通过可插拔的MultipartResolver对象们,它们都是定义在 org.springframework.web.multipart 包中.Spring提供了一个MultipartResolver实

引用开源框架通过AsyncHttpClient进行文件上传

一.步骤: 1.添加权限(访问网络权限和读写权限) 2.获取上传文件路径并判断是否为空 3.若不为空,创建异步请求对象 4.创建上传文件路径 5.执行post请求(指定url路径,封装上传参数,新建AsyncHttpResponseHandler方法) 二.查看参考文档 三.实例项目解析 运行效果如下:       在本地文件夹中查看是否获取到图片,如下图显示 重点代码:均有详细解析,请认真查看注释 1.在AndroidManifest.xml中添加权限 <uses-permission and

封装了okhttp的网络框架,支持大文件上传下载,上传进度...

本帖最后由 anjoy紫外线 于 2016-4-20 16:42 编辑   1.用法 对于Eclipse不能运行项目的,提供了apk供直接运行,位于项目根目录 okhttputils_v1.x.x.apk. 本项目Demo的网络请求是我自己的服务器,有时候可能不稳定,网速比较慢时请耐心等待.. 对于Android Studio的用户,可以选择添加: compile 'com.lzy.net:okhttputils:1.3.0'  //可以单独使用,不需要依赖下方的扩展包    compile'c

SpringMVC框架(3)--文件上传与SpringMVC拦截器

SpringMVC文件上传原理: SpringMVC文件上传步骤: 1.pom.xml中添加坐标 <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </dependency> <dependency> <g

MVC+WCF框架下广告位管理——文件上传

广告位是网站中必不可少的内容之一,也是能直接给我们网站带来经济收益的内容之一.好的广告位不仅不会强宾压主,而会为我们的网站锦上添花,起到画龙点睛的作用,因此设计好广告位也是开发过程中一大重要环节. 最近在做一个珠宝检测站的项目,其中管理页面就涉及到了广告位管理,之前项目中也有不少有广告位的,但都不是自己负责.其大致思路就是要从管理页面上传相应的图片,并且要保存到数据库,然后从所有上传过的图片中选择一张显示到网站首页.原理并不太难,但是鉴于性能问题,我们只需要数据库保存图片的路径即可. 重点是在M

Spring MVC笔记(七) springMVC文件上传

创建springMVC工程 SpringMVCFileUpload,导入springMVC相关jar以及commons-io.jar.commons-fileupload.jar: 创建springMVC默认配置文件 SpringMVCFileUpload-servlet.xml: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework

Spring MVC4使用Servlet3 MultiPartConfigElement文件上传实例

在这篇文章中,我们将使用Spring MultipartResolver 实现 StandardServletMultipartResolver在Servlet3环境中实现单点和多文件上传功能.Spring提供了内置的multipart支持来处理Web应用程序文件上传. 简短的概述 在这篇文章中,我们将使用Servlet3.0以及javax.servlet.MultipartConfigElement,为了激活 Servlet3.0环境和Spring 的Multipart支持,你需要做以下: 1

Spring MVC(四)文件上传

文件上传步骤 1.写一个文件上传的页面 2.写一个文件上传的控制器 注意: 1.method="post" 2.enctype="multipart/form-data" 3.文件类型上传组件 type="file" 4.接收文件参数需要使用MultipartFile 类型的参数 5.配置文件解析器,文件解析器 id 必须是 "multipartResolver" 1 <%@ page language="ja