|
SSISO Community검색 |
|
SSISO Community메뉴 |
|
SSISO Community카페 |
|
블로그 카테고리 |
|
|
struts로 검색한 결과 |
|
등록일:2008-03-16 00:35:20 작성자: 제목:Struts에서 ActionForm 처리 |
|
struts에서 ActionForm 처리
ActionForm 객체는 클라이언트에서 입력한 데이터를 비즈니스 계층으로 전달하는 역할을 합니다. struts Framework에서는 사용자의 입력 화면에서 입력한 데이터를 자동으로 모아 ActionForm 인스턴스의 setter를 이용해 설정하며 이를 통해 비즈니스 계층으로 데이터를 전달 할 수 있습니다.
여기서 한가지 주의 할 점은 ActionForm을 비즈니스 계층으로 직접 전달 하기 보다는 적절한 DTO(Data Transfer Object)를 생성하는 것이 훨씬 효율적 입니다.
스트럿츠에서는 다음과 같이 ActionForm 을 처리 합니다.
1. Action의 매핑 정보를 확인 하고 Action이 설정 되어 있는지 확인 합니다. Action 매핑의 name 속성에 해당 하는 <form-bean > 매핑이 있는지 확인 하는 겁니다.
<!-- ========== Form Bean Definitions ================================ -->
<form-beans>
<form-bean name="loginForm" type="login2.LoginForm">
<form-property name="pwd" type="java.lang.String" />
<form-property name="id" type="java.lang.String" />
</form-bean>
</form-beans>
<!-- ========== Action Mapping Definitions ============================ -->
<!--valiedate를 true라고 함으로써 LoginForm의 validate가 호출됩니다. -->
<action-mappings>
<!-- loginAction에 대한 정의 -->
<action
path="/LoginSubmit"
type="login2.LoginAction"
name="loginForm"
validate="true"
input="/login.jsp"
/>
<!-- logoffAction에 대한 정의 -->
<action
path="/logoff"
type="login2.LogoffAction"
name="logoffForm"
validate="false"
/>
</action-mappings>
2. 메모리에 ActionForm 인스턴스가 있는지 확인하여 이미 만들어진 타입이 같고 scope가 적당 한 것이 있으면 재사용하고 없으면 새로 인스턴스를 생성 합니다. 새 인스턴스를 만드는 경우엔 scope 속성이 있다면 속성에 따른 scope에 저장 합니다.
3. ActionForm의 reset 메소드를 호출 합니다.
public void reset(ActionMapping mapping, HttpServletRequest request) {
pwd = "";
id = "";
}
4. ActionForm의 setter를 통해 요청 파라미터 값을 ActionForm에 입력 합니다.
public void setId(String id) {
this.id = id;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
5. validate속성이 “true”로 설정 되어 있으면 validate() 메소드를 실행 하고 에러가 있다면 에러를 반환 합니다.
public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
ActionErrors errors = new ActionErrors();
if((id == null) || (id.length()<1)) {
errors.add("error.id.required", new ActionError("error.id.required"));
}
if((pwd == null) || (pwd.length()<1)) {
errors.add("error.pwd.required", new ActionError("error.pwd.required"));
}
return errors;
}
폼 데이터를 전송 하는 모든 HTML 페이지에서 ActionForm 사용해야 하는데 HTML의 폼필드의 이름과 ActionForm의 속성의 이름이 일치한다면 ActionForm을 여러 페이지에서 사용 가능 합니다.
중요한 메소드는 reset(), validate() 메소드 인데 하나씩 보도록 하죠~
reset() 메소드의 원형은 다음과 같습니다.
public void reset(ActionMapping mapping, HttpServletRequest request);
스트럿츠의 ActionForm 클래스의 위 두메소드는 기본적으로 아무 기능도 수행 하지 않으므로 ActionForm을 상속한 하위 클래스에서 필요하다면 재정의(Override) 해야 합니다.
Controller는 요청 파라미터에 있는 ActionForm의 인스턴스에 입력 하기전에 reset() 메소드를 수행 합니다. 결국 reset이라는 것은 초기화의 의미이며 폼빈의 인스턴스를 공유하는 경우엔 중요한 부분 입니다.
Controller 는 요청값들이 ActionForm의 setter에 의해 설정 되면 validate가 “true”로 설정 된 경우에는 valiedate() 메소드를 호출 하는데 이 메소드에서는 사용자의 입력 값에 대한 validation check를 수행 합니다. 오류가 있다면 ActionError 객체에 담아서 리턴 합니다. ActionForm에서의 validate()는 비즈니스 로직 이라기 보다는 입력 값의 단순한 검사 정도로 보시면 되며 실제 들어온 값에 대한 논리적인 타탕성등 여러가지 검사를 하기 위해서는 별도의 비즈니스 로직을 만들어 처리해야 합니다.
validate() 메소드의 원형은 다음과 같습니다.
public ActionErrors validate(ActionMapping mapping, HttpServletRequest request);
[출처] [본문스크랩] struts에서 ActionForm 처리|작성자 어린양이
http://blog.naver.com/dlckdeo81/41814127 |
|
|
|
|
|