오브젝트 타입 및 내용물?검사에 대한 의견 부탁드립니다.

36 views
Skip to first unread message

용이

unread,
Jan 12, 2011, 7:40:08 AM1/12/11
to Korea Spring User Group
타입에 대한 검증과 패턴검증을 하려고 하는데요, 서버단에서 해보는건 정말 기본적인
것들뿐이었어서 방대한 API들 Util클래스들을 보다가 어떤게 효율적일까 궁금하여. 이번에 조언을 구하고자 합니다.

예제상황 : 회원가입폼으로부터 전송받은 데이터를 검증
User 클래스에 자동 바인딩됨

1. 먼저 이름(String name)을 검증해보려고 합니다.
비거나 공백, 길이값은 쉽게 검증이되는데, 만약 123을 입력했을때 예외를 발생시키지 않고
이것이 문자가 아닌 숫자라는 것을 어떻게 판단할까요?
그리고 한글이라는 것은 어떻게 판단할까요?

*int타입은 다행히 문자입력시 바인딩에러가 나는데,
바인딩되는 도메인 오브젝트의 필드타입이 String일때는 바인딩에러도 안나는 ㅠㅠ

2. 패턴 검사를 하는데 효율적인 로직이나 유틸이 있을까요?
예를들어 String password 검사시,
(영문,숫자조합 / 아이디와 주민등록번호 4자 이상 중복 사용 금지 )


번외질문 : Array로 Submit된 예를들어 checkbox의 값에 대한 바인딩을
스프링에서는 어떻게 진행하나요?
도메인 오브젝트의 필드를 어떤타입으로 만들고 getter/setter를 어떻게 해놔야 할까요? ㅎ

Sanghyuk Jung

unread,
Jan 12, 2011, 8:50:40 AM1/12/11
to ks...@googlegroups.com
안녕하세요~
 
숫자인지는 정규식을 쓰거나, String을 charAt으로 돌면서 Character.isDigit으로 검사해보면 되지 않으까하구요
 
한글인지 여부는 아래 link를 참조하면 될 듯해요
 

 
패턴검사는 보통 정규식을 많이 쓰는데 강력한 대신 실수의 여지도 많고 수정하기도 햇갈려서 저는 최후의 수단정도로만 정규식을 쓰고 있어요.
 
2011년 1월 12일 오후 9:40, 용이 <clov...@naver.com>님의 말:



--
Google 그룹스 'Korea Spring User Group' 그룹에 가입했으므로 본 메일이 전송되었습니다.
이 그룹에 게시하려면 ks...@googlegroups.com(으)로 이메일을 보내세요.
그룹에서 탈퇴하려면 ksug+uns...@googlegroups.com로 이메일을 보내주세요.
더 많은 옵션을 보려면 http://groups.google.com/group/ksug?hl=ko에서 그룹을 방문하세요.


Sungchul Park

unread,
Jan 12, 2011, 9:26:24 PM1/12/11
to ks...@googlegroups.com

 1. 먼저 이름(String name)을 검증해보려고 합니다.
     비거나 공백, 길이값은 쉽게 검증이되는데, 만약 123을 입력했을때 예외를 발생시키지 않고
     이것이 문자가 아닌 숫자라는 것을 어떻게 판단할까요?
     그리고 한글이라는 것은 어떻게 판단할까요?

이미 정상혁님이 말씀하셨지만 정규식으로 모두 검사 가능합니다.
숫자는 물론 한글 여부도 자바 정규식의 유니코드 지원 기능으로 확인할 수 있습니다.
예를 들어 \p{IsHangul}은 유니코드 한글 스크립트로 찾는 패턴입니다. 상혁님이 링크거신 예제는 블럭으로 비교하는데 자바 정규식에서는 \p{InXXXX} 형식이 유니코드 블럭 비교 패턴입니다.

http://download.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html


 2. 패턴 검사를 하는데 효율적인 로직이나 유틸이 있을까요?
     예를들어 String password 검사시,
     (영문,숫자조합 / 아이디와 주민등록번호 4자 이상 중복 사용 금지 )
예로 드신 건 패턴이라고 하기 뭐하네요.
알고리즘을 직접 만들거나 찾아보셔야겠어요.
위키 백과의 글을 참고하시면 도움이 될 듯 합니다.

http://en.wikipedia.org/wiki/Password_strength


 번외질문 : Array로 Submit된 예를들어 checkbox의 값에 대한 바인딩을
                 스프링에서는 어떻게 진행하나요?
                 도메인 오브젝트의 필드를 어떤타입으로 만들고 getter/setter를 어떻게 해놔야 할까요? ㅎㅎ
CustomCollectionEditor를 사용하시면 됩니다. 다음 문서를 참고하십시오.
http://blog.codecentric.de/en/2009/07/multiple-selects-mit-spring-mvc-2/

용이

unread,
Jan 13, 2011, 5:18:39 AM1/13/11
to Korea Spring User Group
두분 너무 감사합니다^^

근데 혹시나 해서요~
정규식을 사용하면 성능에 영향이 많을까요?

Sungchul Park

unread,
Jan 13, 2011, 6:46:29 AM1/13/11
to ks...@googlegroups.com
진짜 성능에 문제가 되지 않을 때까지는 성능 걱정을 하지 마세요. ^^
적어도 http parameter를 객체에 바인드하는 작업이 병목이 될 가능성은 거의
없다고 봅니다.
Reply all
Reply to author
Forward
0 new messages