spring表单标签:
    <fr:from/> 渲染表单元素
    <fr:input/>输入框组件
    <fr:password/>密码框组件标签
    <fr:hidden/>隐藏框组件标签0
    <fr:textarea/>多行输入框组件标签
    <fr:radiobutton/>单选框组件标签
    <fr:checkbox/>复选框组件标签
    <fr:select/>下拉列表组件标签
    <fr:error/>显示表单数据校验所对应的错误信息
    数据校验:
    JSR 303是Java为Bean数据合法性检验所提供的标准框架。JSR 303通过在Bean属性上标注类似于@NotNull,@Max等标准的注解指定校验规则,并通过标准的验证接口对Bean进行验证。
    JSR 303约束
     @Null 被注解的元素必须为空
     @NotNull 被注解的元素必须不为空
     @AssertTrue 被注解的元素必须为true
     @AssertFalse  被注解的元素必须为false
     @Min(value) 被注解的元素必须有一个数字,其值必须大于等于指定的最小值
     @Max(value)  被注解的元素必须有一个数字,其值必须小于等于指定的最大值
     @DecimalMin(value) 被注解的元素必须有一个数字,其值必须大于等于指定的最小值
     @DecimalMax(value) 被注解的元素必须有一个数字,其值必须小于等于指定的最大值
     @Size(max,min) 被注解的元素的大小必须在指定的范围内
     @Digits(integer,fraction) 被注解的元素必须是一个数字,其值必须在可接受的范围内
     @Past 被注解的元素必须是一个过去的日期
     @Future 被注解的元素必须是一个将来的日期
     @Pattern(value) 被注解的元素必须符合指定的正则表达式
     Spring MVC支持JSR 303标准的校验框架,Spring的DataBinder在进行数据绑定时,可用时调用校验框架来完成数据校验工作,非常方便简洁。在Spring MVC中,可以直接通过注解驱动的方式来进行数据校验。
     在User.java中需要做验证的属性上标注校验注解后,下一步就需要在Controller中使用注解所声明的限制规定来进行数据的校验,由于<mvc:annotation-driven/>会默认装配好一个LocalValidatorFactoryBean,通过在Controller的处理方法的入参上标注@Valid注解即可让SpringMVC在完成数据绑定之后,执行数据校验的工作。
     注意:@Valid注解标示的参数后面,必须紧挨着一个BindingResult参数,否则Spring会在校验不通过时直接抛出异常。

数据校验实例:

<!--后台数据验证-->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>4.0.1.GA
</version>
</dependency> <!--jboss logging-->
<dependency>
<groupId>org.jboss.logging</groupId>
<artifactId>jboss-logging</artifactId>
<version>3.3.0.Final</version>
</dependency> <!--validation api-->
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.0.0.GA
</version>
</dependency> <!--slf4j api-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.21</version>
</dependency>

2.配验证器:LocalvalidatorFactoryBean类
                 属性:HibernateValidator

<!--配置包扫描器-->

   <!--配置包扫描器-->
<context:component-scan base-package="cn.Hibernate"></context:component-scan>
<bean id="myValidator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
<property name="providerClass" value="org.hibernate.validator.HibernateValidator"></property>
</bean> <!--mvc注解驱动-->
<mvc:annotation-driven validator="myValidator"></mvc:annotation-driven>

3.实体类打标记:

public class UserInfo {

    @Min(value =0,message = "成绩最小值为{value}")
@Max(value = 100,message = "最大成绩值为{value}")
private Integer score; @NotEmpty(message = "手机号不允许为空")
@Pattern(regexp = "^1[3456789]\\d{9}$",message = "手机号不正确")
private String phone; @NotEmpty(message = "用户名不能为空")
@Size(min = 3,message = "名字至少3个字符")
private String name;

4.Controller

@Controller
public class CollerHiber {
@RequestMapping("/first")
public ModelAndView doFirst(@Valid UserInfo info, BindingResult bindingResult) {
ModelAndView mv = new ModelAndView();
mv.setViewName("/index.jsp");
int errCount = bindingResult.getErrorCount();
if (errCount > 0) {
//证明模型试验失败
FieldError score = bindingResult.getFieldError("score");
FieldError name = bindingResult.getFieldError("name");
FieldError phone = bindingResult.getFieldError("phone");
if (score != null) {
mv.addObject("scoremsg", score.getDefaultMessage());
}
if (name != null) {
mv.addObject("namemsg", name.getDefaultMessage());
}
if (phone != null) {
mv.addObject("phonemsg", phone.getDefaultMessage());
}
mv.setViewName("/Hiber.jsp");
}
return mv;
}
}

创建一个页面,用来实现代码的展示:

当校验都输入正确之后就会跳转到下一个页面,如图所示:

                   

单文件上传

单文件上传:
    MultipartResolver 用于处理上传请求,将上传请求包装成可以直接获取文件的数据,从而方便操作,他的两个实现类:StanderdServletMultipartResover和CommonsMultipartResolver.
    *StanderdServletMultipartResover:使用了servlet3.0标准的上传方式。
    *CommonsMultipartResolver:使用了Apache的commons-fileupload来完成具体的上传操作。
    使用CommonsMultipartResolver来完成上传,具体步骤如下:
     1.导入jar文件
        需要使用Apache Commons FileUpload组件,因此要在工程中导入commons-io-2.4jar,commons-fileupload-1.2.2jar.
     2.配置MultipartResolver
        首先使用CommonsMultipartResolver配置一个MultipartResolver解析器,关键实例如:
         //配置MultipartResolver,用于上传文件,使用spring的commonsMultipartResolver
        <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
            <property name="maxUploadSize"  value="50000"/>
            <property name="defaultEncoding" value="UTF-8"/>
        </bean>
      *defaultEncoding:请求的编码格式,默认为ISO-8859-1,此处设置为UTF-8(defaultEncoding必须和JSP的pageEncoding设置一致,以便正常读取表单内容)
      *maxUploadSize:上传文件大小上限,单位为字节。
      实现文件上传的流程:Spring MVC会将上传文件绑定到MultipartFile对象中,MultipartFile提供了上传文件内容,文件名等。最后通过其transferTo()方法将文件存储到服务器上。
      (1)MultipartFile对象作为控制器处理方法的入参(@RequeestParam(value="idPicPath",required=false)MultipartFilevattach),从MultipartFile对象中,可以获取上传文件的相关信息,其提供的方法如:
                        getBytes()            : byte[]
                        getContentType()      :String
                        getInputStream()      :InputStream
                        getName()             :String
                        getOriginalFilename() :String
                        getSize()             :long
                        isEmpty()             :boolean
                        transferTo(File)      :void
      (2)在处理方法中,首先通过MultipartFile对象是否为空来判断是否有上传的文件。若不为空,在进行上传处理,否则直接进行其他数据字段的常规保存。
          if(!attach.isEmpty()){
               //...上传操作
         }
            //调用userService.add(user)方法保存新增数据
     (3)*定义上传目标路径,关键实例如:
                  String path=request.getSession().getServletcontext().getRealPath("statice"+File.separator+"uploadfiles");
          *获取原文件名,关键代码如下:
               String  oldFileName=attache.getOriginalFilename();
          *获取原文件后缀并进行判断:
               String  prefix=FilenameUtils.getExtension(oldFileName);
          *获取原文件大小,并与规定的上传大小进行比较,若超过规定大小。
               int  filesize=500000; 
              if(attach.getSize()>filesize){   
                         requset.setAttribute("uploadFileError","*上传文件大小不得超过500KB");
                      return "useradd";
                  }

单文件上传实例:

首先导入架包:

<!--文件上传的jar包-->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency> <dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>1.4</version>
</dependency>

大配置:

<!--配置包扫描器-->
<context:component-scan base-package="cn.Fileuplode"></context:component-scan>
<!--配置文件上传的专用类-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"></bean>
<mvc:annotation-driven/>

Controller:

    @Controller
public class FileController {
@RequestMapping("/first")
public String doFirst(MultipartFile upload, HttpSession session){
/*获取到用户上的文件名称*/
String chile=upload.getOriginalFilename(); //文件短名称
/*将相对路径转化成绝对路径*/
String parpath=session.getServletContext().getRealPath("/uplode"); /*将file写入指定路径*/
File filepath=new File(parpath,chile);
try {
upload.transferTo(filepath);
return "/Fileuplode.jsp";
} catch (IOException e) {
e.printStackTrace();
return "/list.jsp";
}
}
}
创建一个上传文件的页面:
<h1>文件上传</h1>
<form action="/first" method="post" enctype="multipart/form-data">
文件 <input type="file" name="upload"/>
<input type="submit"/>
</form>
运行结果:

springMVC数据校验与单文件上传的更多相关文章

  1. SpringMVC单文件上传、多文件上传、文件列表显示、文件下载(转)

    林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 本文详细讲解了SpringMVC实例单文件上传.多文件上传.文件列表显示.文件下载. 本文工程 ...

  2. [转]SpringMVC单文件上传、多文件上传、文件列表显示、文件下载

    一.新建一个Web工程,导入相关的包 springmvc的包+commons-fileupload.jar+connom-io.jar+commons-logging,jar+jstl.jar+sta ...

  3. Ajax(form表单文件上传、请求头之contentType、Ajax传递json数据、Ajax文件上传)

    form表单文件上传 上菜 file_put.html <form action="" method="post" enctype="multi ...

  4. SpringMVC(三) RESTful架构和文件上传下载

    RESTful架构 REST全名为:Representational State Transfer.资源表现层状态转化.是目前最流行的一种互联网软件架构. 它结构清晰.符合标准.易于理解.扩展方便,所 ...

  5. Spring Boot2(十四):单文件上传/下载,文件批量上传

    文件上传和下载在项目中经常用到,这里主要学习SpringBoot完成单个文件上传/下载,批量文件上传的场景应用.结合mysql数据库.jpa数据层操作.thymeleaf页面模板. 一.准备 添加ma ...

  6. ASP.NET MVC5+EF6+EasyUI 后台管理系统(56)-插件---单文件上传与easyui使用fancybox

    系列目录 https://yunpan.cn/cZVeSJ33XSHKZ  访问密码 0fc2 今天整合lightbox插件Fancybox1.3.4,发现1.3.4版本太老了.而目前easyui 1 ...

  7. Struts2单文件上传原理及示例

    一.文件上传的原理 表单元素的enctype属性指定的是表单数据的编码方式,该属性有3个值: 1.application/x-www-form-urlencoded:这是默认编码方式,它只处理表单域里 ...

  8. python 全栈开发,Day75(Django与Ajax,文件上传,ajax发送json数据,基于Ajax的文件上传,SweetAlert插件)

    昨日内容回顾 基于对象的跨表查询 正向查询:关联属性在A表中,所以A对象找关联B表数据,正向查询 反向查询:关联属性在A表中,所以B对象找A对象,反向查询 一对多: 按字段:xx book ----- ...

  9. SpringMVC(四)-- springmvc的系统学习之文件上传、ajax&json处理

    资源:尚学堂 邹波 springmvc框架视频 一.文件上传 1.步骤: (1)导入jar包 commons-fileupload,commons-io (2)在springmvc的配置文件中配置解析 ...

随机推荐

  1. 杂文笔记《“去QE”时代下,QE如何破茧重生》

    杂文笔记<"去QE"时代下,QE如何破茧重生> "去QE"时代下,QE如何破茧重生 https://mp.weixin.qq.com/s?__biz ...

  2. 百度之星2017初赛A

    雪崩,没晋级,补题 1001 分析:求n-1的约数个数 #include "iostream" #include "cstdio" #include " ...

  3. 【Lintcode】120.Word Ladder

    题目: Given two words (start and end), and a dictionary, find the length of shortest transformation se ...

  4. poj3208启示录——数位DP

    题目:http://poj.org/problem?id=3208 数位DP,首先按位数预处理出每一种位数的情况,包括有多少个魔鬼数和有多少个以6开头的非魔鬼数,以便递推.累加等等: 然后先找出第X个 ...

  5. shuts down an ExecutorService

    shuts down an ExecutorService in two phases, first by calling shutdown to reject incoming tasks, and ...

  6. elasticsearch2.x安装部署

    目录 一.安装es以及插件 二.建立索引和映射,添加数据 三.备注 一.安装es以及插件 ElasticSearch-2.3.1版本,系统为CentOS 7.0位. 对应的网上下载地址都有: elas ...

  7. poi 导出excel 生成等比例图片

    poi 导出的带等比例图片方法 /** * * <p>Description: 将一物一码列表导出到excel</p> * @param response * @param l ...

  8. App Distribution Guide--(三)---Configuring Your Xcode Project for Distribution

    Configuring Your Xcode Project for Distribution You can edit your project settings anytime, but some ...

  9. python :字符串,列表,元组,集合,字典

    字符串方法: 字符串是一个有序的,不可修改的,元素是以引号包围的序列.单引号,双引号,三引号,str生成 字符串的修饰   a='novo gene' a.center() 让字符串在指定的长度居中显 ...

  10. UVa 1663 Purifying Machine (二分匹配)

    题意:每一个01串中最多含有一个‘*’,‘*’既可表示0也可表示1,给出一些等长的这样的01串,问最少能用多少个这样的串表示出这些串. 如:000.010.0*1表示000.010.001.011,最 ...