学习SpringMVC必知必会(7)~springmvc的数据校

2022-03-29  本文已影响0人  一乐乐

1、JSR303约束

图片.png

2、JSR303约束规则

图片.png


3、校验规则开发:

(1)拷贝jar包:

(2)使用注解

@Data
public class Employee {
    private Long id;
    @NotNull(message = "用户名不能为空")
    @Size(max=10, min=4, message="用户名在4-10位之间")
    private String username;
    @NotNull(message = "密码不能为空")
    @Size(max=10, min=4, message="密码在4-10位之间")
    private String password;
    
    @NotNull(message = "年龄不能为空")
    @Min(value=18, message="年龄最小值为18")
    @Max(value=40, message="年龄最大值为40" )
    private Integer age;
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date hiredate;  
}
    @RequestMapping("/saveOrUpdate")
    public String saveOrUpdate(@Valid Employee e, BindingResult bindingResult, Model model) {
        System.out.println("save~~~");
        List<ObjectError> errors = bindingResult.getAllErrors();
        if (errors.size() > 0) {
            model.addAttribute("errors", errors);
            return "employee/input";
        }
        if(e.getId() == null) {
            employeeService.save(e);
        }else {
            employeeService.update(e);
        }
        return "redirect:/employee/list";
    }

4、国际化操作

■ <font color=blue>一般很少很少用到</font>,使用的是ValidationMessages.properties文件,通过key=value形式,将校验注解的属性的属性值定义成变量,赋值给key,value就是原先的内容。



二、表单标签(作用:方便回显数据)

■ 通过 SpringMVC 的表单标签可以实现将模型数据中的属性和 HTML 表单元素相绑定,以实现表单数据 更便捷编辑和表单值的回显功能。

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

--------------------------- modelAttribute 已经取代 commandName 属性。

图片.png 图片.png 图片.png 图片.png 图片.png 图片.png 图片.png 图片.png 图片.png 图片.png 图片.png

■ 解决常规回显的麻烦:<font color=blue>使用springmvc的表单标签</font>(会直接回显对象的属性值的~,path的值就是需要回显的属性)

<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
 
 
    <form:form action="/employee/saveOrUpdate" modelAttribute="employee">
        <!-- 错误信息(所有是*,具体的话,直接写属性) -->
        <form:errors path="*"/><br/>
        <form:hidden path="id"/><br/>
        账号:<form:input path="username"/><form:errors path="username" cssStyle="color:red;"/><br/>
        密码:<form:password path="password" showPassword="true"/><form:errors path="password" cssStyle="color:red;"/><br/>
        年龄:<form:input path="age"/><form:errors path="age" cssStyle="color:red;"/><br/>
        入职:<form:input path="hiredate"/><br/>
        <input type="submit" value="保存"/><br/>
    </form:form>
图片.png



三、文件上传和下载

1、文件上传

<form action="/upload" method="POST" enctype="multipart/form-data">
    文件上传: <input type="file" name="pic">
</form>

■ SpringMVC 上传文件有两种方式:

1、基于Apache 的上传组件:

2、基于Servlet3.0


(1)基于 Apache FileUpload 组件:

1)拷贝jar包:commons-fileupload.jar commons-io.jar

2)配置文件上传解析器:

<!-- 文件上传的解析器(Apache FileUpload 组件) -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <!-- 限制文件大小(1MB) -->
    <property name="maxUploadSize" value="1048576"/>
</bean>

3)FileUploadController类:

@Controller
public class FileUploadController {
    @Autowired
    private ServletContext servletContext;

    @RequestMapping("/save")
    public ModelAndView save(Employee e, MultipartFile pic) throws Exception {
        System.out.println(e);
        String fileName = pic.getOriginalFilename();
        System.out.println(fileName);
        //下载目录--通过servletContext获取
        String saveDir = servletContext.getRealPath("/upload");
        Files.copy(pic.getInputStream(), Paths.get(saveDir, fileName));
        return null;
    }
}


(2)基于Servlet3.0

SpringBoot里边是默认支持的,不依赖Apache,围绕MultipartConfig注解,Part接口

1)配置:在mvc.xml 中进行配置

<!-- 文件上传的解析器(基于Servlet3.0) -->
<bean class="org.springframework.web.multipart.support.StandardServletMultipartResolver"/>

■ 在前端配置器下面进行配置文件上传:

    <!-- 前端控制器 -->
    <servlet>
        <servlet-name>springDispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:mvc.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
        <!-- 文件上传的配置
            location 和 file-size-threshold 是超过多少就放到磁盘中去
         -->
        <multipart-config>
            <location>E:/temp</location>
            <max-file-size>100000000</max-file-size>
            <max-request-size>100000000</max-request-size>
            <file-size-threshold>1024</file-size-threshold>
        </multipart-config>
    </servlet>


2、文件下载


如果本文对你有帮助的话记得给一乐点个赞哦,感谢!

上一篇下一篇

猜你喜欢

热点阅读