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
- JavaScript #인라인 #인터널 #익스터널 #데이터입출력
- mybatis
- 복습
- 특징및기본구조
- 데이터매핑
- JavaScript #예제 #복습 #Web #웹 #개발자가되고파ㅜㅜ
- JavaScript #자바스크립트 #선택자 #HTML태그접근 #JS
- 정리
- Java #자바 #인터페이스 #implements #다형성 #interface #복습 #정리 #나만의공부
- WEB
- springframework
- 서블릿기초 #servlet #java #webprogramming
- Spring
- JavaScript #선언적함수 #익명함수 #화살표함수 #함수선언방법 #복습
- 데이터조회예제
- List데이터조회
- Java #Web #공부 #복습 #Servlet #서블릿 #포워드 #sendRedirect #dispatcher
- 어노테이션
- Java
- Java #JDBC #Mybatis #동적SQL
- mybatis자료형 #참고자료
- JavaScript #자바스크립트 #복습 #배열 #Array
- Java #자바 #초보개발자 #다형성 #동적바인딩 #instanceof #학습 #요약정리 #복습
- 데이터베이스 #DataBase #Oracle #DB #DataBase개요
- fremework
- 프레임워크
- 스프링
- 동적sql
- 예제
- 페이징처리예제
Archives
- Today
- Total
개발군싹
[Spring]Hibernate? (Hibernate-validator document 참고) 본문
hibernate-validator 6.2.5 ver pom.xml에 추가
- WAS에 Client로 요청받은 데이터가 입력되었을 때 클래스에 저장되는 데이터에 대해 필터링을 할 수 있다.
validator 처리할 객체에 어노테이션 방식으로 필요한 validator어노테이션을 설정할 수 있다.
예제 ) MemberController ⇒ enrollMember에서 객체를 Model에 저장 후 jsp화면으로 전환
@RequestMapping("/enrollMember.do")
public void enrollMember(@ModelAttribute("member") Member m) {}
JSP화면
➡️ JSTL prefix=”springform” 설정
<springform:form modelAttribute="member" action="${path }/member/enrollMemberEnd.do" name="memberEnrollFrm">
➡️ MemberController에서 ModelAttribute에 저장한 객체를 JSP화면에서 springform태그 선언부에 modelAttribute 속성을 선언하여 Validaotr 체크할 객체를 매칭한다.
EnrollMember.jsp
<springform:form modelAttribute="member" action="${path }/member/enrollMemberEnd.do" name="memberEnrollFrm">
<springform:input path="userId" type="text" class="form-control" placeholder="아이디 (4글자이상)" name="userId" id="userId_" />
<springform:errors path="userId" cssClass="error"/>
<springform:input path="password" type="password" class="form-control" placeholder="비밀번호" name="password" id="password_" />
<springform:errors path="password" cssClass="error"/>
<input type="password" class="form-control" placeholder="비밀번호확인" id="password2" />
<springform:input path="name" type="text" class="form-control" placeholder="이름" name="name" id="userName" />
<springform:errors path="name" cssClass="error"/>
<springform:input path="age" type="number" class="form-control" placeholder="나이" name="age" id="age"/>
<springform:errors path="age" cssClass="error"/>
<springform:input path="email" type="text" class="form-control" placeholder="이메일" name="email" id="email" />
<springform:errors path="email" cssClass="error"/>
<springform:input path="phone" type="tel" class="form-control" placeholder="전화번호 (예:01012345678)" name="phone" id="phone" maxlength="11" />
<springform:errors path="phone" cssClass="error"/>
<springform:input path="address" type="text" class="form-control" placeholder="주소" name="address" id="address" />
<springform:errors path="address" cssClass="error"/>
<springform:select path="gender" class="form-control" name="gender" >
<springform:option value="" >성별</springform:option>
<springform:option value="M">남</springform:option>
<springform:option value="F">여</springform:option>
</springform:select>
<springform:errors path="gender" cssClass="error"/>
<div class="form-check-inline form-check">
취미 : <springform:checkbox path="hobby" class="form-check-input"
name="hobby" id="hobby0" value="운동"/><label for="hobby0"
class="form-check-label">운동</label>
<springform:checkbox path="hobby" class="form-check-input" name="hobby" id="hobby1" value="등산"/>
<label for="hobby1" class="form-check-label">등산</label>
<springform:checkbox path="hobby" class="form-check-input" name="hobby" id="hobby2" value="독서"/>
<label for="hobby2" class="form-check-label">독서</label>
<springform:checkbox path="hobby" class="form-check-input" name="hobby" id="hobby3" value="게임"/>
<label for="hobby3" class="form-check-label">게임</label>
<springform:checkbox path="hobby" class="form-check-input" name="hobby" id="hobby4" value="여행"/>
<label for="hobby4" class="form-check-label">여행</label>
</div>
<br /> <input type="submit" class="btn btn-outline-success"
value="가입"> <input type="reset"
class="btn btn-outline-success" value="취소">
</springform:form>
MemberController에서 @Validated 어노테이션으로 JSP에서 설정한 Validator 유효성 검사를 실행 할 변수에 선언해주고 BindingResult로 선언한 변수로 Validator 결과에 대해 분기 처리 할 수 있다.
@RequestMapping("/enrollMemberEnd.do")
public String enrollMemberEnd(@Validated Member m, @RequestParam("userName")String name, BindingResult isResult, Model model) {
m.setName(name);
if(isResult.hasErrors()) {
//validaotr 처리시 error 발생하면 비지니스로직 실행하지 않고
// 본 다시 입력되는 페이지로 전환시킨다.
return "member/enrollMember";
}
Hibernate-Validator DTO에 적용하기
package com.bs.spring.member.model.dto;
import java.sql.Date;
import java.util.List;
import javax.validation.constraints.Email;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class Member {
@NotEmpty(message="아이디는 반드시 입력하세요.")
@Size(min=4, message="아이디는 4글자 이상 입력하세요.")
private String userId;
@NotEmpty(message="패스워드는 반드시 입력하세요.")
/* @Size(min=8,message="패스워드는 8글자 이상입력하세요.") */
@Pattern(regexp="(?=.*?[a-z](?=.*?[A-Z])(?=.*?[~!@#$%^&*()_+-=])[a-zA-Z~!@#$%^&*()_+-=]{8,}", message="비밀번호는 소문자,대문자,특수기호를 포함한 8글자 이상으로 작성하세요.")
private String password;
private String name;
private String gender;
@Min(value=14, message="나이는 14세 이상 입력하세요.")
@Max(value=120, message="입력 가능한 최대나이는 120세 입니다.")
private int age;
@Email
private String email;
private String phone;
private String address;
private List<String> hobby;
private Date enrollDate;
}
➡️ Hibernate-validator Document를 참고하여 Validator Annotation에 대해 공부하여 사용해볼 수 있다.
'Spring' 카테고리의 다른 글
| [Spring]Spring Security 암호화 (0) | 2023.12.12 |
|---|---|
| [Spring]MyBatis 연결/등록하기 (0) | 2023.12.12 |
| [Spring] 요청 데이터 매개변수를 이용한 데이터 맵핑 예제 (0) | 2023.12.10 |
| [Spring]@RequestMapping() (1) | 2023.12.10 |
| [Spring]Spring Bean? (0) | 2023.12.07 |