欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot結(jié)合JSR303對(duì)前端數(shù)據(jù)進(jìn)行校驗(yàn)的示例代碼

 更新時(shí)間:2020年09月02日 11:29:52   作者:IT小村  
這篇文章主要介紹了SpringBoot結(jié)合JSR303對(duì)前端數(shù)據(jù)進(jìn)行校驗(yàn)的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

一、校驗(yàn)分類(lèi)

數(shù)據(jù)的校驗(yàn)一般分為**前端校驗(yàn)后端校驗(yàn)**

二、前端校驗(yàn)

前端校驗(yàn)是最為明顯的,先說(shuō)一下:

① HTML

非空校驗(yàn)HTML5 新增的屬性required="true",一旦沒(méi)有填寫(xiě)就輸入框就顯示紅色,具體使用如:

<input type="text" id="name" name="name" required="true"/>

② JS

同時(shí)在提交表單發(fā)送 Ajax請(qǐng)求 的時(shí)候,來(lái)個(gè) onSubmit 函數(shù),具體例如(使用點(diǎn) EasyUI ):

function submitData(){
		$("#fm").form("submit",{
			url:"/admin/film/save",
			onSubmit:function(){
				var content=CKEDITOR.instances.content.getData();
				if(content==""){
					$.messager.alert("系統(tǒng)提示","內(nèi)容不能為空!");
					return false;
				}
				return $(this).form("validate");
			},
			success:function(result){
				var result=eval('('+result+')');
				if(result.success){
					$.messager.alert("系統(tǒng)提示","保存成功!");
					resetValue();
				}else{
					$.messager.alert("系統(tǒng)提示","保存失敗!");
				}
				
			}
		});
	}

但我們都知道,這是防君子不防小人的做法,用戶可以使用 F12,查看源碼,修改關(guān)鍵部位的代碼,
如把 required="true" 刪除掉,就可以提交表單了。
所以前端作用雖然明顯,但是數(shù)據(jù)處理方面,真正用處并不大。

三、后端校驗(yàn)

前面說(shuō)了那么多,就是為了引出 后端校驗(yàn) 這一話題。數(shù)據(jù)是否提交到數(shù)據(jù)庫(kù)中去,就看后端的代碼了。
后端校驗(yàn),主要實(shí)施在 JavaBean、Controller 中。下面列舉一個(gè)簡(jiǎn)單的例子,從代碼中說(shuō)明一切。

① 代碼結(jié)構(gòu)圖

② entity

實(shí)體屬性部位空,一般使用如 @NotEmpty(message="請(qǐng)輸入用戶名!") ,這樣既不能為 ,也不能為null

package com.cun.entity;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Null;
import javax.validation.constraints.Size;

import org.hibernate.validator.constraints.Email;
import org.hibernate.validator.constraints.NotBlank;

import io.swagger.annotations.ApiModelProperty;

@Entity
@Table(name = "t_person")
public class Person {

	@Id
	@GeneratedValue
	@ApiModelProperty(value = "用戶id")
	private Integer id;

	@NotBlank(message = "用戶名不能為空") // 為""/''都不行
	@Size(min = 2, max = 30, message = "2<長(zhǎng)度<30")
	@Column(length = 50)
	@ApiModelProperty(value = "用戶名")
	private String userName;

	@NotNull(message = "用戶密碼不能為空")
	@Column(length = 50)
	@ApiModelProperty(value = "用戶密碼")
	private String password;

	@Max(value = 150, message = "age應(yīng)<150") // 數(shù)字
	@Min(value = 1, message = "age應(yīng)>1") // 數(shù)字
	@NotNull(message = "年齡不能為空")
	@ApiModelProperty(value = "用戶年齡")
	private Integer age;

	@NotNull(message = "郵箱不為空")
	@Email(message = "郵件格式不對(duì)")
	@Column(length = 100)
	@ApiModelProperty(value = "用戶郵箱")
	private String email;

	// 使用 JPA 必備
	public Person() {
		super();
	}

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getUserName() {
		return userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public Integer getAge() {
		return age;
	}

	public void setAge(Integer age) {
		this.age = age;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

}

③ dao

其實(shí)也沒(méi)什么代碼,這就是 JPA 的強(qiáng)大之處

package com.cun.dao;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;

import com.cun.entity.Person;

public interface PersonDao extends JpaRepository<Person, Integer>, JpaSpecificationExecutor<Person> {

}

④ Service、ServiceImpl (省略)

⑤ Controller

package com.cun.controller;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.validation.Valid;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult;
import org.springframework.validation.ObjectError;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.cun.dao.PersonDao;
import com.cun.entity.Person;

import springfox.documentation.swagger2.annotations.EnableSwagger2;

@RestController
@RequestMapping("/person")
@EnableSwagger2
public class PersonController {

	@Autowired
	private PersonDao personDao;

	@PostMapping("/insert")
	public Map<String, Object> insertPerson(@Valid Person person, BindingResult bindingResult) {
		Map<String, Object> map = new HashMap<String, Object>();
		if (bindingResult.hasErrors()) {
			List<ObjectError> errorList = bindingResult.getAllErrors();
			List<String> mesList=new ArrayList<String>();
			for (int i = 0; i < errorList.size(); i++) {
				mesList.add(errorList.get(i).getDefaultMessage());
			}
			map.put("status", false);
			map.put("error", mesList);
		} else {
			map.put("status", true);
			map.put("msg", "添加成功");
			personDao.save(person);
		}
		return map;
	}

}

⑥ yml

server:
 port: 80 #為了以后訪問(wèn)項(xiàng)目不用寫(xiě)端口號(hào)
 context-path: / #為了以后訪問(wèn)項(xiàng)目不用寫(xiě)項(xiàng)目名
spring:
 datasource:
  driver-class-name: com.mysql.jdbc.Driver
  url: jdbc:mysql://localhost:3306/springboot
  username: root
  password: 123
 jpa:
  hibernate:
   ddl-auto: update #數(shù)據(jù)庫(kù)同步代碼
  show-sql: true   #dao操作時(shí),顯示sql語(yǔ)句

⑦ POM

使用 SpringBoot Starter 導(dǎo)入 JPA、MySQL

使用 Swagger 演示

<!-- swagger生成接口API -->
		<dependency>
			<groupId>io.springfox</groupId>
			<artifactId>springfox-swagger2</artifactId>
			<version>2.7.0</version>
		</dependency>

		<!-- 接口API生成html文檔 -->
		<dependency>
			<groupId>io.springfox</groupId>
			<artifactId>springfox-swagger-ui</artifactId>
			<version>2.6.1</version>
		</dependency>

四、演示

輸入 http://localhost/swagger-ui.html 進(jìn)入接口測(cè)試站點(diǎn)

什么都沒(méi)有填寫(xiě),直接點(diǎn)擊Try it out!,可以看到返回給前端的 JSON 數(shù)據(jù),這時(shí)候數(shù)據(jù)的數(shù)據(jù)是沒(méi)有改動(dòng)的,一條sql 語(yǔ)句都沒(méi)有執(zhí)行

當(dāng)然還可以進(jìn)行其他測(cè)試,這里就省略了

到此這篇關(guān)于SpringBoot結(jié)合JSR303對(duì)前端數(shù)據(jù)進(jìn)行校驗(yàn)的示例代碼的文章就介紹到這了,更多相關(guān)SpringBoot JSR303校驗(yàn)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java基本教程之Thread中start()和run()的區(qū)別 java多線程教程

    java基本教程之Thread中start()和run()的區(qū)別 java多線程教程

    這篇文章主要介紹了Thread中start()和run()的區(qū)別,Thread類(lèi)包含start()和run()方法,它們的區(qū)別是什么?下面將對(duì)此作出解答
    2014-01-01
  • 手把手教你用Java給暗戀對(duì)象發(fā)送一份表白郵件

    手把手教你用Java給暗戀對(duì)象發(fā)送一份表白郵件

    隨著我們學(xué)習(xí)java的深入,也漸漸發(fā)現(xiàn)了它的一些樂(lè)趣,比如發(fā)送郵件,下面這篇文章主要給大家介紹了關(guān)于如何利用Java給暗戀對(duì)象發(fā)送一份表白郵件的相關(guān)資料,需要的朋友可以參考下
    2021-11-11
  • packages思維及使用Java添加Android平臺(tái)特定實(shí)現(xiàn)

    packages思維及使用Java添加Android平臺(tái)特定實(shí)現(xiàn)

    這篇文章主要為大家介紹了packages思維及使用Java添加Android平臺(tái)特定實(shí)現(xiàn)在Flutter框架里的體現(xiàn)和運(yùn)用詳解,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • SpringBoot在線代碼修改器的問(wèn)題及解決方法

    SpringBoot在線代碼修改器的問(wèn)題及解決方法

    這篇文章主要介紹了SpringBoot在線代碼修改器的問(wèn)題及解決方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Java ShutdownHook原理詳解

    Java ShutdownHook原理詳解

    這篇文章主要介紹了Java ShutdownHook原理的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下
    2021-04-04
  • springboot+vue實(shí)現(xiàn)阿里云oss上傳的示例代碼

    springboot+vue實(shí)現(xiàn)阿里云oss上傳的示例代碼

    文件上傳是常用的功能,本文主要介紹了springboot+vue實(shí)現(xiàn)阿里云oss上傳的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-06-06
  • SpringBoot整合Mybatis使用Druid數(shù)據(jù)庫(kù)連接池

    SpringBoot整合Mybatis使用Druid數(shù)據(jù)庫(kù)連接池

    這篇文章主要介紹了SpringBoot整合Mybatis使用Druid數(shù)據(jù)庫(kù)連接池,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • Java基礎(chǔ)教程之八大基本數(shù)據(jù)類(lèi)型

    Java基礎(chǔ)教程之八大基本數(shù)據(jù)類(lèi)型

    這篇文章主要給大家介紹了關(guān)于Java基礎(chǔ)教程之八大基本數(shù)據(jù)類(lèi)型的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • Spring中的@PostConstruct注解使用詳解

    Spring中的@PostConstruct注解使用詳解

    這篇文章主要介紹了Spring中的@PostConstruct注解使用詳解,該注解被用來(lái)修飾一個(gè)非靜態(tài)的void方法,被@PostConstruct修飾的方法會(huì)在服務(wù)器加載Servlet的時(shí)候運(yùn)行,并且只會(huì)被服務(wù)器執(zhí)行一次,需要的朋友可以參考下
    2023-10-10
  • SpringBoot項(xiàng)目中org.junit.jupiter.api.Test報(bào)錯(cuò)問(wèn)題及解決

    SpringBoot項(xiàng)目中org.junit.jupiter.api.Test報(bào)錯(cuò)問(wèn)題及解決

    這篇文章主要介紹了SpringBoot項(xiàng)目中org.junit.jupiter.api.Test報(bào)錯(cuò)問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11

最新評(píng)論