Spring数据校验及文件上传功能

1. REST风格

REST(Representational State Transfer)是一种软件架构风格,主要用于构建基于HTTP协议的Web服务。RESTful服务通过URL来表示资源,通过HTTP方法(GET、POST、PUT、DELETE)来操作资源。Spring MVC提供了强大的支持来构建RESTful应用程序

  • 资源表示:资源通过URL来表示
  • 无状态性:每个请求都包含了所有必要的信息,服务器不存储任何客户端状态
  • 统一接口:通过HTTP标准方法操作资源
  • 自描述性消息:通过HTTP头信息和状态码传递信息

2. Spring表单及数据校验

Spring框架为处理Web表单提供了强大的支持,特别是与数据校验相结合,使得表单数据处理更加简单和高效

(1) Spring表单标签

Spring提供了一系列自定义的JSP标签库,用于简化表单开发。这些标签与Spring MVC框架无缝集成,可以轻松绑定表单数据和模型属性

常用表单标签:

  • <form:form>:生成表单标签,绑定模型对象。
  • <form:input>:生成输入框,绑定模型属性。
  • <form:password>:生成密码输入框。
  • <form:textarea>:生成文本区域。
  • <form:checkbox>:生成复选框。
  • <form:radiobutton>:生成单选按钮。
  • <form:select>:生成下拉列表
<form:form method="post" modelAttribute="supplier">
    <form:input path="supCode" />
    <form:input path="supName" />
    <form:input path="supContact" />
    <form:input path="supPhone" />
    <form:input path="supAddress" />
    <form:input path="supFax" />
    <form:input path="supDesc" />
    <form:input type="file" path="companyLicPic" />
    <input type="submit" value="保存" />
</form:form>
(2) 数据校验

Spring提供了强大的数据校验功能,通过注解和Validator接口实现。常用的校验注解有:

  • @NotNull:字段不能为空
  • @NotEmpty:字段不能为空且长度不为0
  • @Size:字段长度范围
  • @Pattern:正则表达式匹配
  • @Min@Max:字段值范围

在Spring MVC控制器中,可以通过@Valid注解启用校验,并使用BindingResult获取校验结果

public class Supplier {
    @NotEmpty(message = "供货商编码不能为空!")
    private String supCode;

    @NotEmpty(message = "供货商名称不能为空!")
    private String supName;

    @NotEmpty(message = "联系人不能为空!")
    private String supContact;

    @Pattern(regexp ="^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\\d{8}$", message = "手机号格式不正确!")
    private String supPhone;
}

3. SpringMVC实现文件上传

文件上传是Web应用中的常见需求,Spring MVC提供了便捷的文件上传支持,主要包括单文件上传和多文件上传

(1) 单文件上传

Spring MVC通过MultipartFile接口来处理上传的文件。需要在Spring配置文件中启用Multipart解析器

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <property name="maxUploadSize" value="5000000"/>
</bean>

控制器示例:

@PostMapping("/add")
public String add(@Valid Supplier supplier, BindingResult bindingResult, HttpSession session,
                  @RequestParam("companyLicPic") MultipartFile attach, HttpServletRequest request) {
    if (bindingResult.hasErrors()) {
        return "supplier/add";
    }

    // 文件上传处理
    if (!attach.isEmpty()) {
        // 上传逻辑
    }

    // 保存供应商逻辑
    return "redirect:/sys/supplier/list";
}
(2) 多文件上传

多文件上传可以通过MultipartFile[]数组来处理多个文件。

控制器示例:

@PostMapping("/add")
public String add(@Valid Supplier supplier, BindingResult bindingResult, HttpSession session,
                  @RequestParam("companyLicPic") MultipartFile[] attachs, HttpServletRequest request) {
    if (bindingResult.hasErrors()) {
        return "supplier/add";
    }

    // 多文件上传处理
    for (MultipartFile attach : attachs) {
        if (!attach.isEmpty()) {
            // 上传逻辑
        }
    }

    // 保存供应商逻辑
    return "redirect:/sys/supplier/list";
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值