17.springboot后台验证

来源:互联网 发布:淘宝1钻店卖 编辑:程序博客网 时间:2024/06/13 06:30

1.项目图


使用thymeleaf控制页面跳转,使用hibernate-validator验证(在实体上通过注解限制实体属性要求),前台页面通过el表达式设置属性和实体的对应

form:表单页面

results:表单提交成功页面


2.建立工程

(1)pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">    <modelVersion>4.0.0</modelVersion>      <groupId>com.tyf</groupId>    <artifactId>test</artifactId>    <version>0.0.1-SNAPSHOT</version>    <packaging>jar</packaging>      <name>test</name>    <url>http://maven.apache.org</url>      <!-- springboot -->    <parent>          <groupId>org.springframework.boot</groupId>          <artifactId>spring-boot-starter-parent</artifactId>          <version>1.5.2.RELEASE</version>          <relativePath/>     </parent>      <!-- 编码 -->    <properties>      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>    </properties>      <dependencies>            <dependency>                <groupId>org.springframework.boot</groupId>                <artifactId>spring-boot-starter</artifactId>            </dependency>          <dependency>                  <groupId>org.springframework.boot</groupId>                  <artifactId>spring-boot-starter-web</artifactId>          </dependency>              <!-- test -->          <dependency>                  <groupId>org.springframework.boot</groupId>                  <artifactId>spring-boot-starter-test</artifactId>                  <scope>test</scope>          </dependency>      <!-- 跳转 --><dependency>                <groupId>org.springframework.boot</groupId>                <artifactId>spring-boot-starter-thymeleaf</artifactId>        </dependency><!-- 跳转 -->        <!-- 使用hibernate验证 -->        <dependency>            <groupId>org.hibernate</groupId>            <artifactId>hibernate-validator</artifactId>        </dependency><!-- 使用hibernate验证 -->        <!-- el -->        <dependency>            <groupId>org.apache.tomcat.embed</groupId>            <artifactId>tomcat-embed-el</artifactId>        </dependency><!-- e1 -->    </dependencies>                <!-- maven插件 -->      <build>          <plugins>              <plugin>                  <groupId>org.springframework.boot</groupId>                  <artifactId>spring-boot-maven-plugin</artifactId>              </plugin>          </plugins>      </build>                   </project>


(2)建立html文件
<!--form--><html>    <body>        <form action="#" th:action="@{/}" th:object="${personForm}" method="post">            <table>                <tr>                    <td>Name:</td>                    <td><input type="text" th:field="*{name}" /></td>                    <td th:if="${#fields.hasErrors('name')}" th:errors="*{name}">Name Error</td>                </tr>                <tr>                    <td>Age:</td>                    <td><input type="text" th:field="*{age}" /></td>                    <td th:if="${#fields.hasErrors('age')}" th:errors="*{age}">Age Error</td>                </tr>                <tr>                    <td><button type="submit">Submit</button></td>                </tr>            </table>        </form>    </body></html><!--results--><!DOCTYPE html><html>    <body>        success    </body></html>


(3)实体类
这个类封装提交的属性,通过注解设置验证规则
package com.tyf.form;import javax.validation.constraints.Min;import javax.validation.constraints.NotNull;import javax.validation.constraints.Size;public class PersonForm {    @NotNull    @Size(min=2, max=30)    private String name;    @NotNull    @Min(18)    private Integer age;    public String getName() {        return this.name;    }    public void setName(String name) {        this.name = name;    }    public Integer getAge() {        return age;    }    public void setAge(Integer age) {        this.age = age;    }    public String toString() {        return "Person(Name: " + this.name + ", Age: " + this.age + ")";    }}


(4)controller
这里是controller不是restcontroller

package com.tyf.form;import javax.validation.Valid;import org.springframework.stereotype.Controller;import org.springframework.validation.BindingResult;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;@Controllerpublic class WebController extends WebMvcConfigurerAdapter {//这里get请求成功的页面    @Override    public void addViewControllers(ViewControllerRegistry registry) {        registry.addViewController("/results").setViewName("results");    }    //下面两个方法会先后执行,get是返回一个html用来收集用户提交的数据,post是处理了用户数据之后返回一个html给用户展示结果    //可以看见两个方法的mapping是一样的这就是一种rest风格            @GetMapping("/")    public String showForm(PersonForm personForm) {        return "form";    }      @PostMapping("/")    public String checkPersonInfo(@Valid PersonForm personForm, BindingResult bindingResult) {        if (bindingResult.hasErrors()) {            return "form";        }        return "redirect:/results";    }}



原创粉丝点击