Spring_유효성 검증

zooyeong·2023년 6월 7일
0

19주차

목록 보기
1/4
post-thumbnail

🔥 들어가기에 앞서...

프로젝트 pom.xml > dependencies 태그에 2개의 dependency 추가

▲ Bean Validation API >>> 2.0.1 Final

▲ Hibernate Validator Engine >>> 6.2.5 Final


📌 Spring 유효성 검증 (Validation)

유효성 검증 어노테이션

어노테이션설명
@AssertTruetrue면 정상
@AssertFalsefalse면 정상
@Max최대 value 값
@Min최소 value 값
@DecimalMax(value=, inclusive=true/false)최대 value 값(실수) / true:<=, false:<
@DecimalMin(value=, inclusive=true/false)최소 value 값(실수) / true:>=, false:>
@NullNull 이어야 한다. (값이 없어야 정상)
@NotNullNull 이 아니어야한다. (값이 있어야 정상)
@Degit(integer=, fraction=)숫자 자리수 >>> integer(정수형) fraction(소수점자리수)
@Size(min=, max=)글자 자리수
@Pattern(regexp=)정규식 만족하면 정상
@NotEmpty값이 있어야 정상! (띄어쓰기 인정)
@NotBlank값이 있어야 정상! (띄어쓰기 제외)
@Positive양수가 들어와야 정상
@PositiveOrZero양수 + 0 까지 인정
@Negative음수가 들어오면 정상
@NegativeOrZero음수 + 0 까지 인정
@Email이메일 형식이 맞으면 정상



유효성 검증 클래스(InputFormDto)

import javax.validation.constraints.Max;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;

public class InputFormDto {
	
	@Size(min = 8, max = 14)
	String input1;
	
	@Max(1000)
	String input2;
	
	@NotBlank
	String input3;

	public String getInput1() {
		return input1;
	}
	public void setInput1(String input1) {
		this.input1 = input1;
	}
	public String getInput2() {
		return input2;
	}
	public void setInput2(String input2) {
		this.input2 = input2;
	}
	public String getInput3() {
		return input3;
	}
	public void setInput3(String input3) {
		this.input3 = input3;
	}
	
}

유효성 검증 메시지 프로퍼티

#valid_view 페이지 inputFormDto 에러 메시지
Size.inputFormDto.input1=8~14자리로 입력해주세요.
Max.inputFormDto.input2=5000 아래로 입력해주세요.
NotBlank.inputFormDto.input3=필수 입력 항목입니다.

유효성 검증 컨트롤러

@Controller
public class ValidationController {
	
	@GetMapping("/valid_form")
	public String valid() {
		
		return "valid_form";
	}
	
	@PostMapping("/valid_form")
	public String valid_input(@Valid InputFormDto inputFormDto,
									BindingResult bindingResult,
									Model model) {
		//@Valid 요청으로부터 들어온 값을 inputFormDto 객체에 매핑시키고
		//내부에 Valid 검증 유효성 기준으로 검증을 수행해달라
		//	>>> Dto 상의 조건과 Valid는 세트임!!!
		//	>>> 이후 잘못된 값은 BindingResult에 담아줌
		
		// >>>>>>> BindingResult로 유효성 검증! <<<<<<<
		if(bindingResult.hasErrors()) {
			
			model.addAttribute("isError", "true");
			
			return "valid_form"; //잘못입력했으니 다시 입력페이지로 돌리기!
		}
		
		return "valid_end";
	}
}

유효성 검증 .jsp

최상단에
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
추가하기 !!

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
	<style type="text/css">
		.errMsg{
			color:red;
			font-style:italic;
		}
	</style>
</head>
<body>
	<h1>valid_view</h1>
	<form action="" method="post">
		<label>input1<input type="text" name="input1" value="${inputFormDto.input1}"></label><br/>
		<span class="errMsg">		
			<spring:hasBindErrors name="inputFormDto">
				<c:if test="${errors.hasFieldErrors('input1')}">
					
					<spring:message code="${errors.getFieldError('input1').codes[0]}"/>
					
				</c:if>
			</spring:hasBindErrors>
		</span>
		<hr/>
		
		<label>input2<input type="text" name="input2" value="${inputFormDto.input2}"></label><br/>
		<span class="errMsg">		
			<spring:hasBindErrors name="inputFormDto">
				<c:if test="${errors.hasFieldErrors('input2')}">
					
                    <spring:message code="${errors.getFieldError('input2').codes[0]}"/>
                    
				</c:if>
			</spring:hasBindErrors>
		</span>
		<hr/>
		
		<label>input3<input type="text" name="input3" value="${inputFormDto.input3}"></label><br/>
		<span class="errMsg">
			<spring:hasBindErrors name="inputFormDto">
				<c:if test="${errors.hasFieldErrors('input3')}">
					
                    <spring:message code="${errors.getFieldError('input3').codes[0]}"/>
                    
				</c:if>
			</spring:hasBindErrors>
		</span>
		<hr/>
		
		<c:if test="${isError == true}">
			입력 내용을 확인해주세요.
		</c:if>
        <br>
		
		<button type="submit">보내기</button>
	</form>
</body>
</html>



↓↓↓↓↓ 유효성 검증 실행결과 ↓↓↓↓↓

profile
Have a good day ⌯’▾’⌯

0개의 댓글