스트러츠 프레임워크 고급 활용 ActionForm 클래스를 이용한 고급 폼 처리기법을 이해한다 Validator 프레임워크를 이용한 입력 검증 기법을 이해한다 스트러츠 한글문제의 해결 방안을 배운다 DispatchAction 클래스를 이용한 다중 액션 처리 기법을 이해한다 한빛미디어(주)
ActionForm Section 01 ActionForm 동작 구조 ActionForm 클래스는 HTML 폼 입력 항목을 자동으로 매핑하고 관리할 수 있도록 해준다. struts-config.xml 파일 설정 비교 name 속성에 ActionForm 클래스 이름을 명시 scope 는 ActionForm 값의 유효 범위를 지정함 ActionForm 사용 전 ActionForm 사용 <action path="/ch16/calc" type="jspbook.ch16.CalcAction" validate="false"> </action> path="/ch17/calc" type="jspbook.ch17.CalcAction" name="calcForm" validate="true" scope="request" input="/ch17/calc.jsp"/>
ActionForm Section 01 ActionForm 동작 구조 동작 구조 예제 애플리케이션은 숫자와 연산자를 넣고 계산 버튼을 눌렀을때 calc.do 요청 struts-config.xml 설정에 따라 validate() 메서드 수행후 검증 성공인 경우 CalcAction 클래스의 execute 메서드 실행후 CalcAction 매핑에 따라 다시 calc.jsp 로 포워딩 에러 발생시에는 input 속성에 따라 calc.jsp 로 되돌아 감
ActionForm 계산기 구현 교재 : 608 ~ 616 페이지 실습과제 개요
Validator Section 02 Validator 프레임워크란 사용자 입력 검증 프레임워크 HTML 폼을 통해 입력한 값을 표준화 된 방법으로 검증 할 수 있도록 함. ActionForm 클래스의 validator() 메서드 보다 유연한 관리가 가능 함 검증 룰을 별도 파일에서 관리함으로써 하드코딩에서 오는 문제 해결 가능 Validator 프레임워크 구성 struts-config.xml 파일에 <plug-in> 항목으로 등록 validator-rules.xml 파일에 검증유형에 따른 기본설정(수정할 필요 없음) validator.xml 파일에 검증 항목과 어떤 룰을 적용할 것인지 설정함 메시지 리소스 파일을 이용해 출력 메시지 결정
Validator Section 02 Validator 프레임워크란 Validator 프레임워크 관련 설정 파일 파일 이름 설명 struts-config.xml <plug-in> 태그에 Validator 플러그인 클래스를 등록하고, validation.xml 및 validator-rule.xml 파일의 위치를 기술한다. validation.xml 입력 폼의 각 필드에 대한 유효성 검증 규칙을 매핑한다. 예를 들어 ‘tel 항목은 반드시 입력되어야 하며(required), XXX-XXX-XXXX 규칙을 갖는다’ 등의 검증 규칙과 처리 메시지의 키 값을 지정한다. validator-rule.xml 애플리케이션에서 사용하는 전체적인 검증 규칙을 모아놓은 파일로, 개발자가 직접 만들기보다는 대부분 스트러츠에서 기본적으로 제공되는 파일을 사용한다. 애플리케이션에 독립적이기 때문에 모든 스트러츠 애플리케이션에서 호환된다. ValidatorForm ActionForm 대신 사용하는 폼 클래스이다. 멤버 변수와 getter/setter 메서드로만 구성되며, 별도의 validate()와 같은 메서드는 작성하지 않는다. 만일 동적인 폼 클래스 관리를 원한다면 ValidatorForm 클래스를 상속한 클래스를 만드는 것이 아니라, 직접 DynaValidatorForm 클래스를 사용할 수도 있다.
Validator를 사용한 회원가입 교재 : 618 ~ 633 페이지 실습과제 개요 간단한 회원등록 양식을 통해 회원가입 처리에 응용할 수 있는 예제 ActionForm 과 Validator 프레임워크, 메시지 리소스 파일 을 이용한 중급 수준의 종합 예제
스트러츠와 한글문제 Section 03 HTML 폼 전달 값의 한글처리 개요 필터를 이용한 방법 스트러츠의 경우 jsp->jsp 가 아니라 중간에 컨트롤러를 거치게 되므로 단순히request.setCharacterEncoding() 메서드를 이용해서는 한글처리가 안됨 필터를 이용한 방법 기존 JSP 에서 필터를 이용해 한글을 처리한 것과 동일한 방법(13장 참조) 스트러츠에서도 동일하게 사용할 수 있음 Action 혹은 ActionForm 클래스에서 처리 스트러츠의 경우 request 객체가 Action 혹은 ActionForm 클래스로 전달 되므로 이들 클래스에서 인코딩 처리를 해줄 수 있다. 한글처리가 여러 클래스로 분산되어 관리상에 문제가 있어 권장되지 않음 RequestProcessor 클래스를 상속받아 처리 스트러츠 프레임워크의 구조적인 특징을 활용한 방법 필터를 사용하는 방법과 함께 권장되는 방법으로 비교적 간단하게 구현 가능함
스트러츠와 한글문제 Section 03 메시지 리소스 파일의 한글처리 개요 native2ascii.exe 를 이용한 방법 MessageResources.properties 파일을 사용할 경우 한글 메시지를 key 설정 값으로 사용할 경우 모든 한글이 깨져서 출력됨 스트러츠의 문제라기 보다는 자바에서 properties 파일 처리 방식의 문제 native2ascii.exe 를 이용한 방법 JDK 에 기본적으로 포함된 native2ascii.exe 라는 유틸리티 프로그램을 통해 만들어진 한글 리소스 파일을 일괄적으로 유니코드로 변경하는 방식임 비교적 간단하나 메시지 내용이 수정되면 매번 변환 작업을 해주어야 하고 변환된 유니코드 파일의 경우 텍스트로 읽어서는 내용을 읽을 수 없다 작은 규모의 애플리케이션 이나 메시지가 거의 변경되지 않을 경우 권장 PropertyMessageResources 클래스 상속 구현 스트러츠에서 메시지 리소스 파일을 처리할 때 PropertyMessageResources 라는 클래스에서 메시지 내용을 읽어와 해쉬맵에 저장하는데 이러한 특성을 이용한 방법 클래스 상속을 통해 해당 키값의 메시지를 전달해주는 getMessage() 메서드에서 한글처리 코드를 삽입해 오버라이딩 함 성능에 아주 민감한 경우에는 메시지를 해쉬 맵으로 저장하는 loadLocale() 메서드를 오버라이딩 해주는 것이 좋으나 이 경우 원 소스를 분석하고 해당 내용을 모두 구현해 주어야 하므로 주의가 필요함
DispatchAction Section 04 DispatchAction 이란 개요 DispatchAction 동작 구조 따라서 규모가 커질수록 Action 클래스가 많아지고 struts-config.xml 이 복잡해 짐 DispatchAction 은 이러한 문제를 해결하기 위한 하나의 방법으로 단일 Action 클래스를 여러 요청에 활용 할 수 있도록 만든 것이다. 예를들어 장바구니 처럼 여러 동작이 하나의 단위를 이루는 경우와 같이 묶어서 관리하는 것이 편리한 곳에서 사용할 수 있음 비교적 작은 규모의 웹 애플리케이션 개발에 스트러츠를 적용할 경우에도 고려할수 있음 DispatchAction 동작 구조 액션 매핑 설정에서 parameter 속성을 이용해 다중 액션을 구분할 파라미터 이름 설정 즉 DispatchAction의 경우 하나의 액션 클래스에서 사용자 요청 파라미터 이름과 동일한 메서드를 만들어 해당 요청을 처리하는 방식임 예를들어 menu.do?method=list 라는 요청이 있을때 액션 클래스의 list() 메서드가 호출되는 구조임 해당 메서드의 처리방식은 기존 Action 클래스 에서와 유사함
DispatchAction Section 04 DispatchAction 이란 DispatchAction 동작 구조
DispatchAction 실습 교재 : 645 ~ 650 페이지 실습과제 개요 DispatcAction 을 실무에 활용하기 위한 모든 과정 실습