20/09/15 웹 프로그래밍 기초 (Reflection, 이클립스 정규표현식 대체, annotation)
<Reflection>
우리가 지금까지 작성한 소스에 든 전역변수
commons beanutils 1.9.4
<정규표현식 이용해서 편하게 Replace하기>
**Options에 Regular Expressions가 꼭 체크 되어있어야함**
영문자 \w
한개이상 +
그룹핑 ()
$1
* 0번 이상 반복
. 모든 타입의 글자 상관없이 한문자
[.\s] s는 스페이스
등등~~~
Replace with 부분에서 $1 : 위에서 첫번째 그룹( ) 반복할 것 없이 선택 가능
<ajax>
ajax에서 url, data, method는 요청과 관련되어 있고, dataType, success, error는 응답과 관련되어있다.
<마샬링을 하면 forward를 해줄 필요가 없다!>
마샬링, 직렬화했을 때는 forward로 따로 보내줄 필요가 없다.
writeValue()로 이미 응답 데이터가 나갔기 때문에 (=버퍼가 방출됨) forward 등을 해줄 수 없다.
<Hibernate Validator>
built-in annotation을 이용해 검증하도록 해줌
3-tier구조처럼 소스가 나눠져있어도 Domain Model 하나에서 검증해줌. => 완전 편리!!
<JUnit> 테스트 프레임워크의 일종!
static import 문법: *Asterisk를 써서 해당 패키지에 든 클래스들을 다 import해준다.
=> 내가 가진 클래스처럼 method 이름만으로도 사용 가능
@Test : test하고 싶은 클래스들 (얘네 간에는 순서 없음. 각각 독립적으로 존재. = 결합력있는 코드 짜면 절대 안됨)
@BeforeClass : 다른 모든 클래스들 이전에 함 실행해줌
@Before : @Test가 붙은 클래스 각각이 실행되기 이전에 실행됨
<커스텀 Validation 메시지 만들기>
baseName: kr.or.ddit.msgs~ 여기에 나만의 CustomValidationMessage를 만들어봅시다!
이런 annotation들의 상위 어노테이션을 meta annotations라고 함.
보면 Target과 Retention이라는 메타 어노테이션들이 꼭 나온다.
RetentionPolicy
- SOURCE: 컴파일 전에만 소스에 포함되어있음
- CLASS: 컴파일 이후 bytecode에 포함됨
- RUNTIME: 소스에도, 바이트코드에도, 런타임코드에도 있음 (for 컴파일러)
*검증하려면 사용자로부터 파라미터 입력받고 요청 받아오고 해야함. 이 때까지 살아있어야 한다면 => RetentionPolicy.RUNTIME
검증을 하려면 필요한 것
1. PasswordCheck라는 인터페이스: 검증 조건들과 default값 설정
2. PasswordChecker라는 ConstraintValidator클래스 : 인터페이스를 사용해 검증 (docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/#validator-customconstraints)
3. 테스트를 담은 클래스
PasswordChecker가 PasswordCheck를 상속받을 때 그냥 그것만 필요하지 않음.
요로코롬 ConstraintValidator를 이용해서 PasswordCheck를 상속 받은뒤 '내가 String을 주로 check할 거임'이라는 걸 알려준다.