Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
Tags
- 로그인
- findBy
- Method 방식
- IntelliJ
- login
- @AuthenticationPrincipal
- security
- 낙서
- 유효성 검사
- 분리 개발
- 백틱
- MockAPI
- HttpOnly
- API
- 보안
- 자바 스크립트
- 공부
- 그림
- js
- Security 설정
- 웹개발
- ES6+
- 웹
- 취미
- JavqScript
- SpringBoot
- 시
- AJAX
- 카카오
- VS Code
Archives
- Today
- Total
개발가능구역
[ IntelliJ ] Validation 유효성 검사 본문
반응형

사용 클래스 : Controller, Service, DTO, Entity
사용 인터페이스 : Service 구현, Repository
사용 DB : ORACLE
UI : HTML, Thymeleaf
implementation 'org.springframework.boot:spring-boot-starter-validation'
build.gradle 에 validation 추가하고, 오른쪽에 코끼리 나오니 그걸 눌러줍니다.
DTO
@Setter @Getter
public class MemberDTO {
@NotBlank
@Size(min = 4, max = 12)
@Pattern(regexp = "^[a-zA-Z0-9]", message = "아이디는 영문자와 숫자 조합, 4자 이상 12자 이하만 가능합니다.")
private String id;
private String pw;
private String nickname;
private String phone;
private String madress;
}
@NotBlank : 빈 문자열, null 불가 → 입력이 무조건 있어야 한다.
@Size(min = 4, max = 12) : 최소 4자, 최대 12자 / 여기에 message 붙여도 된다.
@Pattern(regexp = " . . . ") : 문자 제한 걸어둔다.
- message : UI에 입력시킬 문자
Controller
@GetMapping("/sign_up")
public String signup01(Model model) {
model.addAttribute("memberDTO", new MemberDTO());
return "member/signup";
}
@PostMapping("/signup_save")
public String signup02(@Valid MemberDTO dto, BindingResult bindingResult, Model model) {
if (bindingResult.hasErrors()) {
return "member/signup";
}
service.save(dto);
return "redirect:/";
}
GET / signup01 : Thymleaf 폼과 DTO 연결하고, 아까 message에 입력한 값을 화면에 보여주기 위해 Model 로 DTO 정의.
POST / signup02 :
- @Valid : DTO 검증 수행.
- BindingResult : 검증 결과 저장.
- hasErrors() : 에러가 있다면~
- if ( bindingResult.hasErrors() ) :
- 아까 조건 건 것에 문제가 있다면, 조건이랑 부합하지 않다면 다시 입력창으로 되돌린다.
- 아니면 service.save(dto) 로 넘겨서 잘 저장한다.
UI
<form th:action="@{/signup_save}" th:object="${memberDTO}" method="post">
<div>
<label>ID: </label>
<input type="text" th:field="*{id}" />
<p th:if="${#fields.hasErrors('id')}" th:errors="*{id}"></p>
</div>
th:object : 아까 Controller / signup01 에서 보낸 message 정보를 가져온다
th:field = " *{id} " : DTO의 id 필드와 연결시킴
<p th:if="${#fields.hasErrors('id')}" th:errors="*{id}"></p> : 검증 오류가 있으면 메시지 글로 표시한다.
이제 출력을 해보면

꾸미는 건 언젠가 꼭..!
반응형
'SpringBoot > IntelliJ' 카테고리의 다른 글
| [ IntelliJ ] Spring Security 로그인 01 (0) | 2025.09.30 |
|---|---|
| [ IntelliJ ] JavaScript 활용 유효성 검사 ( 전화번호 ) (0) | 2025.09.29 |
| [ IntelliJ ] SpringBoot JavaScript 활용 유효성 검사 ( 비밀번호 확인 ) (2) | 2025.09.27 |
| [ IntelliJ ] Spring Boot 검색 기능 ( 쿼리 사용 or 자동 쿼리 ) (2) | 2025.09.25 |
| [ IntelliJ ] Spring boot 페이징 처리하기 (0) | 2025.09.24 |