inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

회원 등록

유효성 검사 질문

524

청율

작성한 질문수 3

2

안녕하세요 강사님

다름이 아니라 기존에 프로젝트에서 spring 프레임워크, jsp, 자바스크립트 + jquery 기반으로  실무에서 웹개발을 했는데

사실상 스프링을 사용하고 있다고 말하기 민망할 정도로 기능을 거의 사용하지 못했었습니다.

그래서 이부분도 새로 공부중입니다ㅠㅠ

강의를 듣다보니 @Vaild나 NotEmpty같은 어노테이션도 알게 되고 BindingResult 같은 클래스 패키지도 알게되면서

뭔가 새로태어나는 기분이 들고 있습니다.

이번 강의 끝에 유효성 검사부분을 배우면서 생각이 드는 것이

저는 보통 유효성 검사를 할 때 자바스크립트 jquery를 사용해서 클라이언트단에서 유효성 검사를 하고 중요한 데이터의 경우 백단에서 DB체크(?)를 한번 더 해주는 식으로 개발했었는데요

스프링+타임리프를 조합하니 클라이언트단에서도

UX조작이 가능한 것 같았습니다.

유효성 검사의 어노테이션들을 적절하게 사용한다면

더이상 클라이언트단에서  자바스크립트를 통해 유효성 검사 부분이 불필요하게 되는 건가 조심스럽게 여쭤봅니다.

spring spring-boot 웹앱 JPA java

답변 1

8

김영한

안녕하세요. 오준영님^^

이 부분은 절대적인 답이 있다기 보다는 트레이드 오프가 있습니다.

자바스크립트로 검증하면, 서버 통신을 안해도 되니 사용자 반응성과 속도에서 확실히 장점이 있습니다.

하지만 보안은 취약하지요. 그래서 자바스크립트로 하면 결국 서버 사이드에서 검증을 추가로 해주어야 합니다.

반면에 이렇게 서버에서 다 처리하는 방식을 사용하면, 서버 사이드에서만 검증을 하면 되니 여러가지 편리함이 있습니다. 대신 복잡한 화면은 또 이렇게 처리하기가 쉽지 않습니다. 그리고 서버를 왔다 갔다 해야하니 사용자 반응 속도에서 좋지 않습니다.

그래서 이 두가지를 적절하게 섞어서 사용하는 부분을 고민해보시는 것도 좋습니다. 예를 들어서 자주 발생하는 간단한 오류는 자바스크립트로 해결하고, 추가로 또 서버에서 검증하는 부분은 기본으로 가져가구요.

감사합니다^^

0

const.takeo

예를들면 아이디입력을 이메일로 받을경우 글자수 체크나 @ .com등 형식체크등은 프론트단에서 자바스크립트로 간단히 빠르게 해주고

비밀번호처럼 서버와 직접 데이터를 조회해서 검증해야할부분들은 서버쪽에서 다 해주라

는 걸로 이해해도 될까요?

0

김영한

이메일 형식도 사용자가 이상하게 서버에 넘길 수 있습니다. (스크립트를 강제로 수정해서) 따라서 원칙적으로는 서버에서 주요한 모든 부분을 체크해야합니다. 물론 실용적인 부분에서 어느정도는 타협할 수 있다 생각합니다.

감사합니다.

sdk 설정 오류

0

53

2

오탈자 - @Transactional

0

56

1

src/test/resources 테스트 경로 문제

0

50

1

상품 등록후 H2 db 출력 순서 바꿀 수 있나요?

0

64

1

MemberRepositoryTest 실행오류

0

81

1

boot 4.x >>> trasasction rolled back log & p6spy(영한님, 수업 자료 업데이트 해주시면 감사하겠습니다!!)

1

184

2

강의 마지막 QueryDSL 사용 부분 질문있습니다

1

142

2

클라이언트에서 isbn과 author 수정 요청을 한 경우에 대해 질문드립니다.

0

51

1

도메인 모델 패턴 vs 트랜잭션 스크립트 패턴

0

71

1

기본 생성자

0

60

1

h2 DB 연결시 jdbc url 변경 이유가 궁금합니다.

0

103

1

멤버서비스테스트 부분에서 막힙니다.

0

165

4

실무에서도 EntityManager를 이용해서 많이 작업하는 편일까요?

0

116

1

초반에 h2 다운로드 과정 꼭 필요한가요?

0

120

2

자신 필드에도 get으로 접근하는 이유가 있을까요?

0

114

1

24분 27초 연관관계 편의 메서드 위치

0

113

1

단건 주문만 가능하게 한건 의도한 부분이신가요?

0

109

2

빌드 툴, Gradle

0

59

1

h2연결은 된 것 같은데 엔티티 테이블까지 작성 후 확인해보아도 테이블이 안보입니다

0

77

2

Repository에서 EntityManager 주입 방식 차이

0

90

1

롬복과 사용자 정의 setter 메서드

0

73

1

주문 목록 조회 fetch join 질문드립니다

0

82

1

dirty checking 질문드립니다.

0

83

1

동시성 관련 질문입니다

0

75

1